JAVA---集合子接口之Set

版权声明:转载请标明出处~~谢谢! https://blog.csdn.net/zoe_ranxiaosu/article/details/82117360

Set接口

特点1:无序,存储的元素与添加顺序无关
特点2:不可重复(使用元素的equals方法来判定是否重复)
特点3:能存储null元素,只能存储一次。

Hash算法机制
Set集合在添加或查看元素时,当集合中的元素过多时,就会进行多次的比较,效率变低。为了提高效率,在设计元素类型时,提供hash算法,用于返回对象的一个int值。在内存中开辟很多小的区域,用于存储一定范围返回值的对象。
       当我们想添加元素或查看元素时,先计算此元素的返回值,然后去相应区域中查找遍历,
       如果在这个区域没有找到对象,说明集合中可以存储这个对象。如果有,然后查看两个对象的equals的返回值。
       equals返回值为true,不能添加
       equals返回值为false,可以添加,添加至对应的单向链表结构中(尽可能的避免发生) 

Set接口派生出的子类 

HashSet:通过实现hash算法的一种数据结构,无序,不重复。增加/删除时效率高。

LinkedHashSet:通过实现hash算法的一种数据结构,但是通过链表来维持顺序。

                            顺序与添加顺序一致,在查看检索时效率比较高。


TreeSet:是SortedSet子接口的实现类,使用二叉树的数据结构存储数据并维护元素的顺序。

Set集合的遍历

 因为Set集合是无序的,无下标可言,因此不能使用经典for循环。我们可以使用迭代器原理。
         
     (1)调用集合的iterator()获取迭代器
     (2)使用foreach循环

猜你喜欢

转载自blog.csdn.net/zoe_ranxiaosu/article/details/82117360