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