Set 注重独一无二的性质,该体系集合用于存储无序(存入和取出的顺序不一定相同)元素,值不能重复。对象的相等性本质是对象 hashCode 值(java 是依据对象的内存地址计算出的此序号)判断的,如果想要让两个不同的对象视为相等的,就必须覆盖 Object 的 hashCode 方法和 equals 方法。
Set这个接口下有HashSet、TreeSet及LinkHashSet这三个常见的实现类。
- HashSet:HashSet底层实现是HashMap,利用了map的key不可重复的性质,在map的key存放相应的元素,value值是个常量,因此HashSet中元素具有不重复性,无序性。
- TreeSet:TreeSet底层是二叉树,因此每次放入元素都会按照元素的大小放到指定的位置,因此它是有序的,且Set中元素同样具有不重复性。
- LinkedHashSet:底层实现是哈希表和链表,且是一个双向链表。双向链表是链表的一种,他的每个数据节点都有两个指针分别指向直接后继和直接前驱,所以从双向链表的任意一个节点开始都可以很方便的访问它的前驱节点和后继节点。因此具有该数据结构中的数据具有有序并且不重复的特性。
网友评论