Set
# Set
如果我们只需要存储不重复的 key,并不需要存储映射的 value,那么就可以使用 Set。
# 常用方法
Set 用于存储不重复的元素集合,它主要提供以下几个方法:
- 将元素添加进
Set<E>:boolean add(E e) - 将元素从
Set<E>删除:boolean remove(Object e) - 判断是否包含元素:
boolean contains(Object e) - 清空所有元素:
void clear()
Set 也是一个接口,常用的实现类有 HashSet
演示下:
Set<String> set = new HashSet<>();
System.out.println(set.add("艾米莉雅")); //true
System.out.println(set.add("雷姆")); //true
System.out.println(set.add("拉姆")); //true
System.out.println(set.add("姬丝秀忒")); //true
System.out.println(set.add("姬丝秀忒")); //false
System.out.println();
System.out.println(set.contains("姬丝秀忒")); //true
System.out.println(set.remove("姬丝秀忒")); //true
System.out.println(set.remove("姬丝秀忒")); //false,元素已经不存在
System.out.println(set.size()); //3
1
2
3
4
5
6
7
8
9
10
11
12
2
3
4
5
6
7
8
9
10
11
12
注意点:
- 放入
Set的元素和Map的 key 类似,都要正确实现equals()和hashCode()方法,否则该元素无法正确地放入 HashSet类似一个只存储 key、不存储 value 的Map,其内部实现就是对HashMap的一个简单封装Set接口并不保证有序
# TreeSet
和 TreeMap 类似,Set 也有一个 TreeSet 类,实现了 SortedSet 接口,是有序的。
┌───┐
│Set│
└───┘
▲
┌────┴─────┐
│ │
┌───────┐ ┌─────────┐
│HashSet│ │SortedSet│
└───────┘ └─────────┘
▲
│
┌─────────┐
│ TreeSet │
└─────────┘
1
2
3
4
5
6
7
8
9
10
11
12
13
14
2
3
4
5
6
7
8
9
10
11
12
13
14
在遍历 TreeSet 时,输出就是有序的:
Set<String> set = new TreeSet<>();
set.add("orange");
set.add("apple");
set.add("banana");
for (String s : set) {
System.out.println(s);
}
1
2
3
4
5
6
7
2
3
4
5
6
7
同 TreeMap 一样,添加的元素必须正确实现 Comparable 接口,如果没有实现 Comparable 接口,那么创建 TreeSet 时必须传入一个 Comparator 对象。
上次更新: 2024/10/1 18:45:09