Set<E>接口
接口 Set<E>
是 Java 集合框架中的一个核心接口,继承自 Collection<E>
,主要用于存储无序且唯一的元素集合。以下是关于 Set<E>
的关键特性和常见实现:
核心特性
- 唯一性:不允许存储重复元素。添加重复元素时,
add()
方法会返回false
。 - 无序性:元素存储顺序不确定(不同实现类行为可能不同)。
- 无索引:不支持通过索引访问元素。
常用实现类
| 哈希表 | 快速查找和插入,元素无序(根据哈希值存储)。 |
| 红黑树 | 元素有序(默认自然排序或自定义比较器),支持范围查询。 |
| 哈希表 + 链表 | 保持元素插入顺序,查询和插入效率介于
和
之间。 |
常用方法
boolean add(E e)
:添加元素,若元素已存在则返回false
。boolean remove(Object o)
:移除指定元素。boolean contains(Object o)
:判断集合是否包含指定元素。int size()
:返回集合中元素的个数。void clear()
:清空集合。Iterator<E> iterator()
:返回迭代器用于遍历元素。
遍历方式
- 迭代器:
- 增强 for 循环:
- Java 8+ 流式处理:
注意事项
- 元素唯一性:
Set
通过equals()
和hashCode()
方法判断元素是否重复。若自定义类需重写这两个方法。 - 线程安全:
Set
的实现类(如HashSet
)非线程安全。若需线程安全,可使用Collections.synchronizedSet()
或并发包中的ConcurrentSkipListSet
。
应用场景
- 去重:过滤重复数据(如统计不重复的单词)。
- 快速查找:使用
HashSet
实现高效的存在性检查。 - 有序存储:使用
TreeSet
或LinkedHashSet
保持特定顺序。
Java集合框架 文章被收录于专栏
Java集合框架是Java提供的一组用于存储和操作数据的类和接口,它位于java.util包中,为开发者提供了强大且灵活的数据存储和处理能力。以下将从整体架构、主要接口、常用实现类、使用场景以及示例代码等方面详细介绍Java集合框架。