java学习笔记之Set接口及其常用方法 2019/5/9

Set接口及其常用方法

写在开头

我是一名java小白,目前在B站学习java,学习的视频是尚学堂高琪老师的java300集课程,笔记大部分参考老师的随堂笔记,我仅以博客的方式记录下我的笔记代码和一些个人见解,对一些问题的考虑可能不周全,代码也不够好看,希望大家多多包涵,有意见的也可以在下面评论,我会好好总结错误,慢慢进步的。

Set接口

Set接口继承自Collection,Set接口中没有新增方法,方法和Collection保持完全一致。我们在前面通过List学习的方法,在Set中仍然适用。因此,学习Set的使用将没有任何难度。

Set容器特点:无序、不可重复。无序指Set中的元素没有索引,我们只能遍历查找;不可重复指不允许加入重复的元素。更确切地讲,新元素如果和Set中某个元素通过equals()方法对比为true,则不能加入;甚至,Set中也只能放入一个null元素,不能多个。

Set常用的实现类有:HashSet、TreeSet等,我们一般使用HashSet

常用方法(HashSet)

1.iterator()方法返回对此 set 中元素进行迭代的迭代器。返回元素的顺序并不是特定的。底层调用HashMap的keySet返回所有的key,这点反应了HashSet中的所有元素都是保存在HashMap的key中,value则是使用的PRESENT对象,该对象为static final。
2.size()返回此 set 中的元素的数量(set 的容量)。底层调用HashMap的size方法,返回HashMap容器的大小。在这里插入图片描述
3. isEmpty(),判断HashSet()集合是否为空,为空返回 true,否则返回false。在这里插入图片描述

4.contains(),判断某个元素是否存在于HashSet()中,存在返回true,否则返回false。更加确切的讲应该是要满足这种关系才能返回true:(o == null ? e==null : o.equals(e))。底层调用containsKey判断HashMap的key值是否为空。在这里插入图片描述

5.add()如果此 set 中尚未包含指定元素,则添加指定元素。如果此Set没有包含满足(e == null ? e2==null : e.equals(e2)) 的e2时,则将e2添加到Set中,否则不添加且返回false。由于底层使用HashMap的put方法将key = e,value=PRESENT构建成key-value键值对,当此e存在于HashMap的key中,则value将会覆盖原有value,但是key保持不变,所以如果将一个已经存在的e元素添加中HashSet中,新添加的元素是不会保存到HashMap中,所以这就满足了HashSet中元素不会重复的特性。在这里插入图片描述
6.remove()如果指定元素存在于此 set 中,则将其移除。底层使用HashMap的remove方法删除指定的Entry。在这里插入图片描述
7. clear从此 set 中移除所有元素。底层调用HashMap的clear方法清除所有的Entry。
在这里插入图片描述

常用方法(TreeSet)

1.add:将指定的元素添加到此 set(如果该元素尚未存在于 set 中)
2.addAll:将指定 collection 中的所有元素添加到此 set 中。
3.ceiling:返回此 set 中大于等于给定元素的最小元素;如果不存在这样的元素,则返回 null。
4.clear:移除此 set 中的所有元素。
5.contains:如果此 set 包含指定的元素,则返回 true。
6.descendingIterator:返回在此 set 元素上按降序进行迭代的迭代器。
7.descendingSet:返回此 set 中所包含元素的逆序视图。
8.first:返回此 set 中当前第一个(最低)元素。
9.floor:返回此 set 中小于等于给定元素的最大元素;如果不存在这样的元素,则返回 null。
10.headSet:返回此 set 的部分视图,其元素严格小于 toElement。在这里插入图片描述
11.higher:返回此 set 中严格大于给定元素的最小元素;如果不存在这样的元素,则返回 null。
12.获取并移除第一个(最低)元素;如果此 set 为空,则返回 null。
13.、pollLast:获取并移除最后一个(最高)元素;如果此 set 为空,则返回 null。
14.remove:将指定的元素从 set 中移除(如果该元素存在于此 set 中)。

参考:

http://www.sxt.cn/Java_jQuery_in_action/nine-setinterface.html
http://www.360doc.com/content/18/0215/10/38207480_730076681.shtml

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值