Java 中的 Set 是 不允许重复元素 的集合,常用实现类有:
HashSet(最常用,无序)LinkedHashSet(按插入顺序)TreeSet(有序,支持排序)下面是 Set 常用方法 的总结(以 Set<E> 接口为主):
boolean add(E e)
truefalseSet<String> set = new HashSet<>();
set.add("apple");
set.add("banana");
boolean remove(Object o)
trueset.remove("apple");
boolean contains(Object o)
set.contains("banana"); // true
boolean isEmpty()
set.isEmpty();
int size()
set.size();
void clear()
set.clear();
boolean addAll(Collection<? extends E> c)
Set<String> set2 = new HashSet<>();
set2.addAll(set);
boolean containsAll(Collection<?> c)
set.containsAll(set2);
boolean removeAll(Collection<?> c)
set.removeAll(set2);
boolean retainAll(Collection<?> c)
set.retainAll(set2); // 只保留 set 和 set2 的交集
for (String s : set) {
System.out.println(s);
}
Iterator<String> it = set.iterator();
while (it.hasNext()) {
System.out.println(it.next());
}
set.forEach(System.out::println);
| 实现类 | 是否有序 | 是否排序 | 底层结构 |
|---|---|---|---|
| HashSet | ❌ | ❌ | 哈希表 |
| LinkedHashSet | ✅(插入顺序) | ❌ | 哈希表 + 链表 |
| TreeSet | ✅ | ✅(自然/定制排序) | 红黑树 |
Set 不保证顺序(除非是 LinkedHashSet 或 TreeSet)Set 允许一个 null(HashSet / LinkedHashSet)TreeSet 不允许 null(会抛 NullPointerException)如果你需要,我也可以:
Set 和 ListHashSet 去重原理TreeSet 排序规则免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。