Set接口:java.util.Set接口 extends Collection接口
Set接口的特点:
- 不允许存储重复的元素
- 没有索引,没有带索引的方法,也不能使用普通的for循环遍历
Set接口里面的方法和Collection一致
hashSet集合:java.util.HashSet集合 implements Set接口
HashSet集合的特点:
- 不允许存储重复的元素
- 没有索引,没有带索引的方法,也不能使用普通的for循环遍历
- 是一个无序的集合,存储元素和取出元素的顺序有可能不一致
- 底层是一个哈希表结构(查询速度非常的快)
- 遍历hashSet集合:
- 使用迭代器
- 使用增强for循环
- hashSet集合遍历代码演示:
package com.Java集合;
import java.util.HashSet;
import java.util.Iterator;
import java.util.Set;
public class hashSet {
public static void main(String[] args) {
HashSet<Integer> hashset = new HashSet<>();
hashset.add(1);
hashset.add(3);
hashset.add(2);
hashset.add(5);
hashset.add(5);
//使用增强for循环遍历
for (Integer integer : hashset) {
System.out.println(integer);
}
System.out.println("======================");
//使用迭代器遍历
Iterator<Integer> it = hashset.iterator();
while(it.hasNext()){
System.out.println(it.next());
}
}
}
输出结果:
linkedhashSet集合:java.util.LinkedHashSet集合 extends HashSet集合
LinkedHashSet的特点:
- 不允许存储重复的元素
- 底层是一个哈希表(数组+链表/红黑树)+链表:多了一条链表记录(记录元素的存储顺序),保证元素有序
简单案例:
package com.Java集合;
import java.util.LinkedHashSet;
public class linkedhashSet {
public static void main(String[] args) {
LinkedHashSet<Integer> list = new LinkedHashSet<>();
list.add(1);
list.add(5);
list.add(8);
list.add(9);
list.add(6);
list.add(6);
list.add(7);
System.out.println(list);//[1, 5, 8, 9, 6, 7]
for (Integer integer : list) {
System.out.println(integer);
}
}
}
输出结果: