Java Set的API介绍及代码示例
什么是Set
在Java编程中,Set是一种用于存储不重复元素的集合。Set接口继承了Collection接口,它是一个无序的集合,不会存储重复元素。
Set的特点
- Set中的元素是无序的,不会按照插入顺序存储。
- Set不会存储重复的元素,如果尝试将重复元素添加到Set中,操作将被忽略。
- Set可以包含null元素。
Set的实现类
Java提供了多个Set的实现类,常用的有HashSet、LinkedHashSet和TreeSet。
HashSet
HashSet基于哈希表实现,无序集合,它不保证集合的迭代顺序。
// 创建HashSet
Set<String> set = new HashSet<>();
// 添加元素
set.add("apple");
set.add("banana");
set.add("orange");
// 删除元素
set.remove("banana");
// 判断元素是否存在
boolean contains = set.contains("orange");
// 清空集合
set.clear();
// 获取集合大小
int size = set.size();
LinkedHashSet
LinkedHashSet基于哈希表和链表实现,它保留了元素插入的顺序。
// 创建LinkedHashSet
Set<String> set = new LinkedHashSet<>();
// 添加元素
set.add("apple");
set.add("banana");
set.add("orange");
// 删除元素
set.remove("banana");
// 判断元素是否存在
boolean contains = set.contains("orange");
// 清空集合
set.clear();
// 获取集合大小
int size = set.size();
TreeSet
TreeSet基于红黑树实现,它可以对元素进行排序。
// 创建TreeSet
Set<String> set = new TreeSet<>();
// 添加元素
set.add("apple");
set.add("banana");
set.add("orange");
// 删除元素
set.remove("banana");
// 判断元素是否存在
boolean contains = set.contains("orange");
// 清空集合
set.clear();
// 获取集合大小
int size = set.size();
Set的常用操作
添加元素
使用add方法向Set中添加元素,如果元素已存在则不会被添加。
Set<String> set = new HashSet<>();
set.add("apple");
set.add("banana");
set.add("orange");
删除元素
使用remove方法从Set中删除指定元素。
Set<String> set = new HashSet<>();
set.add("apple");
set.add("banana");
set.add("orange");
set.remove("banana");
判断元素是否存在
使用contains方法判断Set中是否包含指定元素。
Set<String> set = new HashSet<>();
set.add("apple");
set.add("banana");
set.add("orange");
boolean contains = set.contains("orange");
清空集合
使用clear方法清空Set中的所有元素。
Set<String> set = new HashSet<>();
set.add("apple");
set.add("banana");
set.add("orange");
set.clear();
获取集合大小
使用size方法获取Set中元素的个数。
Set<String> set = new HashSet<>();
set.add("apple");
set.add("banana");
set.add("orange");
int size = set.size();
序列图
下面是一个使用Set进行元素添加和删除的序列图示例。
sequenceDiagram
participant Client
participant Set
Client->>Set: add("apple")
Set-->>Client: true
Client->>Set: add("banana")
Set-->>Client: true
Client->>Set: add("orange")
Set-->>Client: true
Client->>Set: remove("banana")
Set-->>Client: true
类图
下面是HashSet、LinkedHashSet和TreeSet的类图示例。
classDiagram
class HashSet{
-HashMap map
+add(E e): boolean
+remove(Object o): boolean
+clear(): void
+contains(Object o): boolean
+size(): int
}
class LinkedHashSet{
-LinkedHashMap map
+add(E e): boolean
+remove(Object o): boolean
+clear(): void
+contains(Object o): boolean
+size(): int
}
class TreeSet{
-NavigableMap map
+add(E e): boolean
+remove(Object o): boolean
+clear(): void
+contains(Object o): boolean
+size(): int
}