java中set什么意思,JAVA中的set
与java.util.List接口一样,java.util.Set接口也继承自Collection接口。与集合接口中的方法基本相同,不扩展集合接口的功能,但比集合接口更严格。与列表界面不同,集合界面中的元素是无序的,使用一些规则来保证存储的元素不会出现重复。
如何解决写爬虫IP受阻的问题?立即使用。
Set集合有多个子类,这里我们介绍其中的java.util.HashSet、java.util.LinkedHashSet这两个集合。
特点:用一些规则来保证存储的元素不重复,集合界面中的元素是无序的。
(1)元素不重复。
元素障碍(指通路障碍)
哈希表:只要自定义对象存储在哈希表中,自定义对象所属的类就必须覆盖hashCodeequals方法。
HashSet集合
底层是通过HashMap实现的底层新HashMap对象,只使用key而不是value值指向统一地址新对象()
API介绍:
Java.util.HashSet是Set接口的实现类。它存储的元素是不可重复的,并且所有元素都是无序的(即访问顺序不一致)。java.util.HashSet的底层实现实际上是一个java.util.HashMap的支持,HashSet根据对象的哈希值来决定元素在集合中的存储位置,因此具有良好的访问和搜索性能。保证元素唯一性的方法取决于:hashCode和equals方法。
特点:
元素不重复。
访问顺序不一致
良好的访问和搜索性能。
元素的唯一性取决于:hashCode和equals方法。
HashSet集合存储数据的结构(哈希表):
在JDK1.8之前,哈希表的底层是通过数组链表来实现的,即使用链表来处理冲突,
相同哈希值的链表存储在一个链表中。但是当一个桶中有更多的元素时,
即当哈希值相等的元素较多时,按键值依次搜索的效率较低。
在JDK1.8中,哈希表的存储是通过数组链表红黑树来实现的,
当链表长度超过阈值(8)时,链表转换为红黑树,大大减少了搜索时间。
总之,JDK1.8引入红黑树大大优化了HashMap的性能,
所以对我们来说,确保HashSet集合元素的唯一性实际上是基于对象的。
HashCode和equals方法。如果我们在集合中存储自定义对象,
然后为了保证它的唯一性,我们必须重写hashCode和equals方法来建立属于当前对象的比较方法。
总结:在1.8之前,是利用哈希表底层的数组链表实现的。
1.8中使用数组链表红黑树存储哈希表(当链表长度超过阈值(8)时,链表将转换为红黑树,从而大大减少搜索时间)保证元素的唯一性,必须重写hashCode和equals方法建立属于当前对象的比较方法。
HashSet存储自定义类型元素(强调):
在HashSet中存储自定义类型元素时,需要覆盖对象中的hashCode和equals方法,
只有建立自己的比较方法,才能保证HashSet集合中的对象是唯一的。
LinkedHashSet
Hasset保证了元素的唯一性,但是元素的存储是没有顺序的,那么要怎么做才能保证顺序呢?hasset下有一个子类java.util.LinkedHashSet,是链表和哈希表相结合的数据存储结构。这就是java set含义的细节。更多请关注我们的其他相关文章!
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。