📜  Java的HashSet 与 TreeSet(1)

📅  最后修改于: 2023-12-03 15:32:04.689000             🧑  作者: Mango

Java的HashSet 与 TreeSet

在Java中,集合是一种非常常用的数据结构。而HashSet和TreeSet是常见的两种集合实现方式。

HashSet
简介

HashSet是一种基于哈希表的实现方式,它实现了Set接口,由于哈希表的性质,它不保证元素的顺序,而且允许null值,并且允许插入重复元素。

构造方法

HashSet提供了四种构造函数:

public HashSet() {
    map = new HashMap<>();
}

public HashSet(Collection<? extends E> c) {
    map = new HashMap<>(Math.max((int) (c.size()/.75f) + 1, 16));
    addAll(c);
}

public HashSet(int initialCapacity, float loadFactor) {
    map = new HashMap<>(initialCapacity, loadFactor);
}

public HashSet(int initialCapacity) {
    map = new HashMap<>(initialCapacity);
}
示例

定义HashSet:

HashSet<String> hashSet = new HashSet<>();

添加元素:

hashSet.add("apple");
hashSet.add("banana");
hashSet.add("orange");

判断元素是否存在:

hashSet.contains("apple"); // true
hashSet.contains("grape"); // false

遍历元素:

for (String fruit : hashSet) {
    System.out.println(fruit);
}

输出:

orange
banana
apple
TreeSet
简介

TreeSet是一种基于红黑树实现的有序集合,它实现了SortedSet接口,可以确保元素按照升序或降序排列。不允许null值,并且不允许插入重复元素。

构造方法

TreeSet提供了三种构造函数:

public TreeSet() {
    this(new TreeMap<>());
}

public TreeSet(Comparator<? super E> comparator) {
    this(new TreeMap<>(comparator));
}

public TreeSet(Collection<? extends E> c) {
    this();
    addAll(c);
}
示例

定义TreeSet:

TreeSet<String> treeSet = new TreeSet<>();

添加元素:

treeSet.add("apple");
treeSet.add("banana");
treeSet.add("orange");

判断元素是否存在:

treeSet.contains("apple"); // true
treeSet.contains("grape"); // false

遍历元素:

for (String fruit : treeSet) {
    System.out.println(fruit);
}

输出:

apple
banana
orange
总结

HashSet和TreeSet都是常见的集合实现方式,它们有着不同的特点和适用场景。当元素需要无序存储、查找和去重时,可以使用HashSet;当元素需要有序排列、范围查询和切割时,可以使用TreeSet。