在Java集合框架中,`Set`接口是一个重要的接口,它表示一个不包含重复元素的集合。常见的`Set`实现类有`HashSet`、`LinkedHashSet`和`TreeSet`。下面是关于`Set`接口的一些基本用法和方法介绍:
常用实现类
-
HashSet:
- 基于哈希表实现,元素无序。
- 插入、删除、查找操作的时间复杂度为O(1)。
-
LinkedHashSet:
- 继承自
HashSet
,并使用双向链表来维护元素的插入顺序。 - 保留元素的插入顺序。
- 继承自
-
TreeSet:
- 基于红黑树实现,元素有序。
- 插入、删除、查找操作的时间复杂度为O(log n)。
- 默认按自然顺序排序,或者可以提供一个
Comparator
。
Set接口常用方法
以下是Set
接口中一些常用的方法及其使用示例:
添加元素
Set<String> set = new HashSet<>();
set.add("apple");
set.add("banana");
set.add("apple"); // 试图添加重复元素,不会添加成功
删除元素
set.remove("banana");
检查元素
boolean containsApple = set.contains("apple");
boolean containsBanana = set.contains("banana");
获取集合大小
int size = set.size(); // 获取集合中元素的个数
遍历集合
使用增强for循环:
for (String item : set) {
System.out.println(item);
}
使用迭代器:
Iterator<String> iterator = set.iterator();
while (iterator.hasNext()) {
String item = iterator.next();
System.out.println(item);
}
清空集合
set.clear(); // 清空集合
判断集合是否为空
boolean isEmpty = set.isEmpty();
Set操作示例
import java.util.HashSet;
import java.util.LinkedHashSet;
import java.util.Set;
import java.util.TreeSet;
public class SetExample {
public static void main(String[] args) {
// HashSet示例
Set<String> hashSet = new HashSet<>();
hashSet.add("apple");
hashSet.add("banana");
hashSet.add("orange");
System.out.println("HashSet: " + hashSet);
// LinkedHashSet示例
Set<String> linkedHashSet = new LinkedHashSet<>();
linkedHashSet.add("apple");
linkedHashSet.add("banana");
linkedHashSet.add("orange");
System.out.println("LinkedHashSet: " + linkedHashSet);
// TreeSet示例
Set<String> treeSet = new TreeSet<>();
treeSet.add("apple");
treeSet.add("banana");
treeSet.add("orange");
System.out.println("TreeSet: " + treeSet);
}
}
在这个示例中,HashSet
显示无序集合,LinkedHashSet
保留插入顺序,而TreeSet
按自然顺序(字典顺序)排序。
总结
Set
接口用于存储不重复的元素。- 主要实现类有
HashSet
、LinkedHashSet
和TreeSet
,它们分别在性能和排序上有所不同。 - 通过常用的方法如
add
、remove
、contains
、size
等可以对集合进行基本操作。
通过这些方法和示例,可以帮助你更好地理解和使用Java中的Set
集合。