网站建设项目经理招聘,如何注册互联网服务平台,吉林教育网站建设方案,建立网站备案需要什么资料Set不能存储重复元素#xff0c;元素无序#xff08;指的是不按照添加的顺序#xff0c;List集合是按照添加顺序存储的#xff09;hashSet注#xff1a;源码底层是hashMap实现的#xff0c;因为hashMap是双列的#xff0c;其中键是不能重复的#xff0c;而hashSet是单列…Set不能存储重复元素元素无序指的是不按照添加的顺序List集合是按照添加顺序存储的hashSet注源码底层是hashMap实现的因为hashMap是双列的其中键是不能重复的而hashSet是单列集合所以就将键单独运用实现了我们的hashSetadd方法注hashset中添加元素时使用的时map中的put方法键是元素而值则是一个常量是一个object对象如下hashSet添加元素时如何判断元素是否已经存在也就是判断hashMap的键是如何判断重复的 add添加元素时会先根据内容对象调用hashCode()方法计算出一个hash值int类型用计算出的哈希值作为标准来比较元素是否重复效率高。但是只用hash值比较是不安全的 因为有些元素虽然内容不同但是它们根据hashcode方法 元素所属的类若重写了hashcode方法则用重写的hashcode方法若没有则使用object类的hashcode方法 计算出的hash值是相同的例“通话”与“种地”为了避免这时会调用equals方法对每个字符进行比较只有hash值和内容都相同时我们才会认定这两个元素重复这时add方法就不会将其添加进set集合中注元素所属的类若重写了hashcode方法则用重写的hashcode方法若没有则使用object类的hashcode方法object类中的hashcode()方法计算的hash值是由内存地址决定的比较得是地址而不是内容所以我们如果要用集合对某个类的实例进行存储时我们需要重写这个类的hashcode方法通过内容计算hash值这样set集合添加这个类的对象时比较的就是内容而不是像object一样比较地址了举例两个对象内容都相同要存入set集合中按道理它们是重复的不能两个都添加但是由于这个类没有重写hashcode方法导致计算出的hash值不同set集合add时就会把两个都添加进去注我们自己定义的类中重写hashcode方法时idea会可以自动帮我们生成方法且都是根据内容计算hash值十分滴好用TreeSet元素不重复且可以对元素进行指定方式的排序是有序的存储的对象必须要实现Comparable接口底层存储结构是二叉树红黑树存储我们自定义的类对象时类必须要实现comparable接口重写compareTo方法。如果对comparable接口不了解的友友可以看下这篇哦~https://blog.csdn.net/weixin_52394141/article/details/128907502遍历方式1.增强for循环2.迭代器Iterator类Set集合总结在java中可以存储一些单列不重复的元素且需要排序时。