目录
Set概述
Set是元素无序且数据不可以重复的集合,也称为集
HashSet实现类
HashSet是Set一个重要的实现类,称为哈希集
HashSet中的元素也是无序且不重复的
HashSet中只允许存在一个null元素
具有良好的存取和查找性能
这里说具有良好的存取和查找性能的原因:
HashSet其实是靠哈希表实现的,所以效率特别高(后面会具体介绍)
HashSet的构造方法,API描述如下
HashSet简单的操作(通过例题体会)
题目:使用HashSet存储表示颜色的英文单词,并进行输出
“blue”、“red”、“black”、“yellow”、“white”
既然要讲到HashSet元素的输出
因为在HashSet中并没有和ArrayList中一样的get方法,所以这里要引入一个概念,叫做迭代器
何为迭代?迭代就是循环遍历的意思,我也不知道还有没有其他的意思,这也是我第一次知道迭代
那么就要使用迭代器对HashSet中的的元素进行输出
上API描述文档
从文档描述可以看出,它也是一个接口
这里还要介绍Iterator接口中的两个方法
分别是hasNext和next
hasNext方法是判断迭代器中是否还有下一个元素,上API文档
从文档的解释来看,如果存在下一个元素,则返回true
next方法是获取迭代器中的下一个元素,上API文档
从文档描述可以看出它的返回值是一个元素
这里还有一点要讲的就是迭代器如何对HashSet的元素进行输出的过程:
首先,使用hasNext方法判断是否存在下一个元素
如果返回true,则使用next进行获取,并输出(如果你想要进行输出的话)
接着又是重复前面的操作,使用hasNext方法进行判断
知道返回false,迭代结束
基础知识介绍完了,接下来上代码
import java.util.HashSet;
import java.util.Iterator;
/*
* 题目:使用HashSet存储表示颜色的英文单词,并进行输出
* “blue”、“red”、“black”、“yellow”、“white”
*/
public class Color {
public static void main(String[] args) {
// 这里加上String可以减少错误,当添加到hc中的对象不是String类型的时候,就会报错
HashSet<String> hc = new HashSet<String>();
hc.add("blue");
hc.add("white");
hc.add("red");
hc.add("yellow");
hc.add("green");
//输出HashSet中的元素
Iterator<String> it = hc.iterator();
while (it.hasNext()) {
System.out.println(it.next());
}
System.out.println("*********************************************");
//添加一个新的元素
hc.add("black");
//这里要重新创建一个迭代器,因为上一个迭代器已经迭代完了,继续使用hasNxet进行判断,会返回false
it = hc.iterator();
while (it.hasNext()) {
System.out.println(it.next());
}
System.out.println("*********************************************");
System.out.println("添加重复元素后");
//添加重复的元素
hc.add("blue");
it=hc.iterator();
while(it.hasNext()) {
System.out.println(it.next());
}
}
}
从添加重复元素之后的情况来看,系统会忽视掉重复添加的元素
所以也可以证明HashSet和Set只能存储不重复的数据