Java中的Set(如果想知道Java中有关Set的知识点,那么只看这一篇就足够了!)
Set是一个不包含重复元素的 collection。更确切地说,set 是一个不允许有重复元素的集合,无序,且不保证维护元素的顺序。
在 Java 中,Set 接口的常用实现类有 HashSet 和 TreeSet。
- HashSet
HashSet 是 Set 接口的典型实现类,它是无序的,允许元素为 null,其底层是哈希表。
Set<String> set = new HashSet<>();
set.add("Apple");
set.add("Banana");
set.add("Cherry");
for (String fruit : set) {
System.out.println(fruit);
}
- TreeSet
TreeSet 是 Set 接口的另一个实现类,它是有序的,底层是红黑树。
Set<String> set = new TreeSet<>();
set.add("Apple");
set.add("Banana");
set.add("Cherry");
for (String fruit : set) {
System.out.println(fruit);
}
- LinkedHashSet
LinkedHashSet 是 HashSet 的一个子类,它维护了一个双向链表,保证了元素的插入顺序。
Set<String> set = new LinkedHashSet<>();
set.add("Apple");
set.add("Banana");
set.add("Cherry");
for (String fruit : set) {
System.out.println(fruit);
}
- EnumSet
EnumSet 是一个专为枚举类设计的 Set 实现,它内部以位向量的形式存储元素,因此效率很高。
Set<Size> set = EnumSet.noneOf(Size.class);
set.add(Size.SMALL);
set.add(Size.MEDIUM);
for (Size size : set) {
System.out.println(size);
}
- 如何选择 Set 实现
如果你不需要 set 保持排序,使用 HashSet 是最佳选择。如果你需要 set 保持排序,使用 TreeSet 是最佳选择。如果你关心元素插入的顺序,使用 LinkedHashSet。如果你的 set 元素类型是枚举,使用 EnumSet。
评论已关闭