Hashset特性和使用方法
HashSet是Java中的一种集合类型,它基于哈希表实现,可以用来存储不重复而无序的元素。HashSet利用hashCode()和equals()方法判断两个元素是否相同,对于相同的元素只会保存其中的一个。
HashSet的主要特点如下:
-
不包含重复元素:HashSet内部使用哈希表来存储元素,同一元素只能出现一次。
-
元素无序:元素在HashSet中没有顺序概念。
-
允许null元素:HashSet允许一个null元素作为集合中的一个元素。
-
高效性能:HashSet是基于哈希表实现的,查找、插入、删除等操作时间复杂度都为O(1)。
HashSet的使用方法如下:
- 创建HashSet对象:可以通过使用无参构造函数创建一个空的HashSet对象,或者通过使用带指定容量和加载因子的构造函数创建一个具有指定初始容量和加载因子的HashSet对象。
HashSet<String> set = new HashSet<>();
HashSet<String> set = new HashSet<>(16, 0.75f);
- 添加元素:使用add(element)方法将元素添加到HashSet中去。
set.add("apple");
set.add("banana");
set.add("orange");
- 删除元素:使用remove(element)方法从HashSet中删除指定元素。
set.remove("banana");
- 判断包含关系:使用contains(element)方法来判断HashSet中是否包含指定元素。
if (set.contains("apple")) {
// 包含"apple"
}
- 获取元素个数:使用size()方法获取HashSet中元素的数目。
int size = set.size();
- 遍历元素:可以使用for-each或Iterator等方式进行遍历,但HashSet内部是无序的,因此不保证元素的返回顺序。
for (String element : set) {
System.out.println(element);
}
Iterator<String> iterator = set.iterator();
while (iterator.hasNext()) {
System.out.println(iterator.next());
}
需要注意的是,默认情况下HashSet的容量为16,加载因子为0.75。在向其中添加大量元素时,可以根据实际情况适当调整容量和加载因子,以提高效率。
两种接口-comparable/comparator
comparable:
Comparable接口是Java中的一个接口,它提供了一种对于自然排序的统一标准、规范。实现该接口的类可以进行排序,并且可以被某些算法(例如Arrays.sort()和Collections.sort())自动排序。
实现Comparable接口需要实现compareTo()方法,方法定义为:
public int compareTo(T obj)