HashSet集合介绍
一、Set接口介绍
Set接口和List接口一样,都是继承自Collection接口,他与Collection接口中的方法基本一致,并没有在Collection接口上进行功能扩充。与List接口不同的是,Set接口中的元素无序,并且都以某种规则保证存入的元素不重复。
二、HashSet集合介绍
HashSet是Set接口的一个实现类,他所存储的元素不能重复,并且元素时无序的。HashSet底层的实现其实是一个HashMap(哈希表)支持。
通过前面的简单介绍,Set和HashSet的特点:
Set:
- 不允许存储重复数据
- 没有索引,没有带索引的方法,也不能使用普通的for循环
HashSet:
- 不允许存储重复元素
- 没有索引,没有带索引的方法,也不能使用普通的for循环
- 是一个无序集合,存储元素和取出元素的顺序可能不同
- 底层是一个哈希表(查询的速度非常快)
这次以add方法举例:
代码如下(示例):
java.util.Set<String> set = new HashSet<>();
//使用add添加数据
set.add("张三");
set.add("李四");
set.add("王五");
set.add("张三");//重复数据
//遍历集合,因为没有索引,索引我们不能使用简单的for循环
//1.迭代器
Iterator<String> it= set.iterator();
while (it.hasNext()){
System.out.println(it.next());
}
System.out.println("*********************");
//2.foreach循环
for (String i:
set) {
System.out.println(i);
}
注意的是Set集合有两种遍历方式,迭代器和foreach循环,稍后在一下篇会说明哈希值,HshSet集合的存储数据的结构以及原理。