一、概念
Set
是 Java 集合框架中的一个接口,其集合内部存储的元素是无序、不重复的。
二、集合体系
常见的 Set
实现类有 HashSet
、 LinkedHashSet
和 TreeSet
。
HashSet
:基于哈希表实现的,集合内存储的元素是无序、不重复的,它的添加、删除、查询元素的时间复杂度都接近O(1)。LinkedHashSet
:是HashSet
的字类,但是集合内存储的元素是有序的。TreeSet
:基于红黑树实现的,集合内存储的元素会按照自然顺序或者指定的比较器顺序进行排序。
需要注意的是,Set
是一个接口,在实际开发中,需要根据不同的需求来选择合适的 Set
实现类。
三、常用方法
Set
集合接口的方法基本与 Collection
接口的API一致,如下表:
方法名 | 含义 |
---|---|
boolean add(E e) | 添加元素 |
int size() | 集合长度 |
boolean remove(Object o) | 移除对象 |
boolean contains(Object o) | 判断集合是否包含此对象 |
void clear() | 清空元素 |
boolean isEmpty() | 判断集合是否为空 |
四、遍历方式
4.1 迭代器
import java.util.HashSet;
import java.util.Iterator;
import java.util.Set;
public class Test {
public static void main(String[] args) {
Set<String> set = new HashSet<>();
set.add("张三");
set.add("李四");
set.add("王五");
// 1. 得到迭代器对象
Iterator<String> iterator = set.iterator();
// 2. 遍历元素
while (iterator.hasNext()) {
String element = iterator.next();
System.out.println("当前元素:" + element);
}
}
}
4.2 增强 for 循环
增强for循环
的底层是通过迭代器实现的。
import java.util.HashSet;
import java.util.Iterator;
import java.util.Set;
public class Test {
public static void main(String[] args) {
Set<String> set = new HashSet<>();
set.add("张三");
set.add("李四");
set.add("王五");
// 遍历元素
for (String element : set) {
System.out.println("当前元素:" + element);
}
}
}
4.3 forEach
通过 Lambda
表达式来遍历集合元素,这种方式更加方便快捷。
import java.util.HashSet;
import java.util.Set;
public class Test {
public static void main(String[] args) {
Set<String> set = new HashSet<>();
set.add("张三");
set.add("李四");
set.add("王五");
// 遍历元素
set.forEach(element -> System.out.println("当前元素:" + element));
}
}