JAVA---集合子接口之Set

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循环

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值