搜索 K
Appearance
博客正在加载中...
Appearance
如果我们只需要存储不重复的 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注意点:
Set 的元素和 Map 的 key 类似,都要正确实现 equals() 和 hashCode() 方法,否则该元素无法正确地放入HashSet 类似一个只存储 key、不存储 value 的 Map,其内部实现就是对 HashMap 的一个简单封装Set 接口并不保证有序和 TreeMap 类似,Set 也有一个 TreeSet 类,实现了 SortedSet 接口,是有序的。
┌───┐
│Set│
└───┘
▲
┌────┴─────┐
│ │
┌───────┐ ┌─────────┐
│HashSet│ │SortedSet│
└───────┘ └─────────┘
▲
│
┌─────────┐
│ TreeSet │
└─────────┘在遍历 TreeSet 时,输出就是有序的:
Set<String> set = new TreeSet<>();
set.add("orange");
set.add("apple");
set.add("banana");
for (String s : set) {
System.out.println(s);
}同 TreeMap 一样,添加的元素必须正确实现 Comparable 接口,如果没有实现 Comparable 接口,那么创建 TreeSet 时必须传入一个 Comparator 对象。