美文网首页
集合Collection之Set(无序,唯一)

集合Collection之Set(无序,唯一)

作者: 紫雨杰 | 来源:发表于2018-06-11 11:24 被阅读0次

一、Set集合常见的子类有:


1、HashSet:无序,唯一
       底层数据结构是哈希表,依赖hashCode和equals方法,由这两个方法保证唯一
       HashSet的add方法底层实际上使用的是HashMap的put方法,键是要添加的值,值是一个Object常量

2、LinkedHashSet:有序,唯一
     底层数据结构是链表和哈希表,由链表(一个元素为链表的数组)保证有序,哈希表保证唯一

3、TreeSet:排序,唯一
     ● 底层数据结构是红黑树,一种自平衡的二叉树。
     ● TreeSet能够对元素按照某种规则进行排序,排序的方式有两种,自然排序和比较器排序,用哪种排序,取决于构造方法
     ●  无参构造,使用的是自然排序,让元素所属的类实现自然排序Comparable接口,重写compareTo方法
     ●  比较器排序,让集合的构造器接收一个比较器接口的子类对象comparator

4、CopyOnWriteArraySet:
     ●  它是线程安全的。 set 大小通常保持很小,只读操作远多于可变操作,需要在遍历期间防止线程间的冲突。
     ●  因为通常需要复制整个基础数组,所以可变操作(add、set 和 remove 等等)的开销很大。
     ●  迭代器不支持可变 remove 操作。
     ●  使用迭代器进行遍历的速度很快,并且不会与其他线程发生冲突。在构造迭代器时,迭代器依赖于不变的数组快照。

二、HashSet的实现:

   对于HashSet而言,它是基于HashMap实现的,HashSet底层使用HashMap来保存所有元素,要保存的元素作为HashMap的key,
   value是一个static final的Object对象标识。因此HashSet 的实现比较简单,相关HashSet的操作,
   基本上都是直接调用底层HashMap的相关方法来完成,所以对于HashSet中保存的对象,请注意正确重写其equals和hashCode方法,
   以保证放入的对象的唯一性。

相关文章

  • 集合框架

    集合框架概述: Collection接口无序,不唯一。List接口有序不唯一。Set接口无序唯一。 ArrayLi...

  • 集合Collection之Set(无序,唯一)

    一、Set集合常见的子类有: 二、HashSet的实现:

  • Java 基础 36 Set集合特点和HashSet集合类

    1.1 Set集合的特点 Set:元素唯一,存储元素无序一个不包含重复元素的 collection HashSet...

  • Java集合体系总结

    一、Collection(单列集合) List 有序 可重复 Set 无序 不可重复 二、Map(双列集合) ...

  • Java散乱(二、集合,泛型,IO)

    集合 Collection接口 Set接口(元素无序,不可重复的集合,无序性:针对的是元素在底层存储的位置是无序的...

  • 集合

    --------| Collection 接口,集合的总接口 List 有序 可重复Set 无序 不可重复 --...

  • 集合---set接口

    set集合是collection下的接口,无序不重复。set中的方法与collection中的方法相同。它的下面也...

  • Set集合API方法实例演示

    Set Set集合接口也继承了Collection集合接口,此集合的元素是无序的,且不允重复。元素默认为正序排序 ...

  • redis集合(有序集合和无序集合)

    无序集合(set) Redis的Set是string类型的无序集合。集合成员是唯一的,这就意味着集合中不能出现重复...

  • java集合中的HashMap

    数据:以键-值对的方式存储 key:无序,唯一(set);value:无序,可重复(collection) 底层:...

网友评论

      本文标题:集合Collection之Set(无序,唯一)

      本文链接:https://www.haomeiwen.com/subject/rthglftx.html