2021-09-29

Java的Set集合
Set集合类似于一个罐子,程序可以依次把多个对象“丢进”Set集合,而Set集合通常不能记住元素的添加顺序。
Set集合不允许包含相同的元素,如果试图把两个相同的元素加入同一个Set集合中,则添加操作失败,add()方法返回 false,且新元素不会被加入。
Set常用方法
返回值 方法(形参) 说明
Boolean add(E e) 如果 set 中尚未存在指定的元素,则添加此元素。
在这里插入图片描述

Boolean addAll(Collection c) 如果 set 中没有指定 collection 中的所有元素,则将其添加到此 set 中。
在这里插入图片描述

Boolean contains(Object o) 如果 set 包含指定的元素,则返回 true。
在这里插入图片描述

Boolean containsAll(Collectionc) 如果此 set 包含指定 collection 的所有元素,则返回true。
在这里插入图片描述

Boolean equals(Object o) 比较指定对象与此 set 的相等性。
Boolean isEmpty() 如果 set 不包含元素,则返回 true。
在这里插入图片描述

Iterator iterator() 返回在此 set 中的元素上进行迭代的迭代器。
在这里插入图片描述

Boolean remove(Object o) 如果 set 中存在指定的元素,则将其移除。
在这里插入图片描述

Boolean removeAll(Collectionc) 移除 set 中那些包含在指定 collection 中的元素。
Boolean retainAll(Collection c) 仅保留 set 中那些包含在指定 collection 中的元素。
在这里插入图片描述

Int size() 返回 set 中的元素数(其容量)。
在这里插入图片描述

Object[] toArray() 返回一个包含 set 中所有元素的数组。
在这里插入图片描述

T[] toArray(T[] a) 返回一个包含此 set 中所有元素的数组;返回数组的运行时类型是指定数组的类型。
在这里插入图片描述

Void clear() 移除此 set 中的所有元素。
在这里插入图片描述

HashSet类
HashSet类是Set接口的典型实现类,大多数时候使用Set集合时就是使用这个实现类。 HashSet类按Hash算法来存储集合中的元素,因此具有很好的存取和查找性能
HashSet类具有以下特点:
不能保证元素的排列顺序,顺序可能与添加顺序不同,顺序也有可能发生变化。HashSet
不是同步的(不是线程安全的),如果多个线程同时访问一个 HashSet,假设有两个或者两个以上线程同时修改了 HashSet集合时,则必须通过代码来保证其同步。
集合元素值可以是null,但只能放入一个null。当向 HashSet集合中存入一个元素时, HashSet会调用该对象的 hashCode()方法来得到该对象的hashCode值,然后根据该hashCode值决定该对象在HashSet中的存储位置。如果有两个元素通过 equals方法比较返回true,但它们的hashCode()方法返回值不相等, HashSet将会把它们存储在不同的位置,依然可以添加成功。
HashSet判断元素是否相等的依据:hashCode()相同,equals()方法相同;

LinkedHashSet类
HashSet类还有一个子类 LinkedHashSet, LinkedHashSet集合也是根据元素的 hashCode值来决定元素的存储位置,但它同时使用链表维护元素的次序,这样使得元素看起来是以插入的顺序保存的。也就是说,当遍历 LinkedhashSet集合里的元素时, LinkedHashSet将会按元素的添加顺序来访问集合里的元素。
LinkedHashSet需要维护元素的插入顺序,因此性能略低于 HashSet的性能,但在迭代访问Set里的全部元素时将有很好的性能,因为它以链表来维护内部顺序。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值