📅  最后修改于: 2023-12-03 15:32:04.689000             🧑  作者: Mango
在Java中,集合是一种非常常用的数据结构。而HashSet和TreeSet是常见的两种集合实现方式。
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是一种基于红黑树实现的有序集合,它实现了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。