Java Set接口及常用实现类总结
Set接口概述
Set接口是Collection接口的子接口,它是一个无序、不重复元素集。Set接口有以下特点:
- 不允许存储重复的元素;
- 没有定义特定的迭代顺序;
- 它是一种集合,因此它不会维护某个元素的插入顺序。
Set接口常用方法
方法名 | 描述 |
---|---|
boolean add(E e) | 添加一个元素到Set中 |
boolean removeAll(Collection<?> c) | 移除Set中属于指定集合的所有元素 |
void clear() | 移除Set中所有的元素 |
boolean contains(Object o) | 判断Set是否包含指定元素 |
boolean isEmpty() | 判断Set是否为空 |
Iterator |
返回Set的元素迭代器(不保证元素顺序) |
int size() | 返回Set的元素个数 |
Set实现类
Java提供了多种Set接口的实现类,主要有以下几种:
HashSet
HashSet基于哈希表实现,它不能保证遍历顺序;可以存储Null值(但只能存储一个)。
示例代码:
Set<String> set = new HashSet<>();
set.add("Java");
set.add("Python");
set.add("C");
set.add(null);
set.add("Java"); // 添加重复元素,不会被添加到Set中
for (String str : set) {
System.out.println(str);
}
输出:
null
Java
Python
C
TreeSet
TreeSet是一个有序的元素集合,它可以按照自然顺序或自定义顺序进行排序,底层数据结构是红黑树。
示例代码:
Set<String> set = new TreeSet<>();
set.add("Java");
set.add("Python");
set.add("C");
set.add("C++"); // TreeSet保证元素自然排序
for (String str : set) {
System.out.println(str);
}
输出:
C
C++
Java
Python
LinkedHashSet
LinkedHashSet基于哈希表和链表实现,它不仅可以保证元素的唯一性,还可以维护元素的添加顺序。
示例代码:
Set<String> set = new LinkedHashSet<>();
set.add("Java");
set.add("Python");
set.add("C");
set.add("C++"); // 添加顺序会被保留
for (String str : set) {
System.out.println(str);
}
输出:
Java
Python
C
C++
小结
Java的Set接口提供了多种实现类,可以根据不同的需求来选择合适的实现类。HashSet适用于需要快速查找元素的情况, TreeSet适用于元素需要排序的情况,LinkedHashSet适用于需要保留元素添加顺序,并且无需过滤重复元素的情况。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Java Set接口及常用实现类总结 - Python技术站