前面我们学习了集合接口的一些方法,然后学习了List接口下的ArrayList和LinkedList两个子类和基本的方法的操作演示。这篇开始,来学习Collection接口的另外一个分支,Set子接口下子类的相关方法。
1.API阅读
打开API文档,然后搜索 Set,API上的第一句话就是:一个不包含重复元素的 collection。前面在集合框架继承体系图,我们介绍了Set集合中的特点是:没有索引,不能重复存储元素的基本特点。API中Set接口页面,发现方法和Collection接口的方法是一样的,什么add是添加元素,remove是删除元素,isEmpty是判断是否为空,toArray是转换数组。这些具体方法在Set接口都实现了,所以,下面我们通过学习Set接口下的具体子类来学习Set集合。Set集合下有两个子类,HashSet和TreeSet,我们先来学习HashSet相关方法的基本使用。
2.HashSet基本介绍和使用
HashSet是Set集合的一个子类,底层是由哈希表实现的。而我们知道ArrayList底层是数组实现的,是有索引的。HashSet是没有索引的,下面我们来验证下HashSet集合不可以存储重复元素和HashSet集合的元素遍历方法。
package hashset;
import java.util.HashSet;
public class Demo1_HashSet {
public static void main(String[] args) {
HashSet<String> hs = new HashSet<>();
boolean b1 = hs.add("a");
boolean b2 = hs.add("a"); //Set集合中如果添加重复元素,返回是false
hs.add("b");
hs.add("c");
//证明不能存储重复元素
System.out.println(hs); //HashSet的间接父类重写了toString方法
System.out.println(b1);
System.out.println(b2);
//使用for each循环比遍历HashSet元素
for (String string : hs) {
System.out.println(string);
}
}
}
输出:
[a, b, c]
true
false
a
b
c