在本文中,我们将讨论HashSet
和TreeSet
之间的差异。
HashSet
与TreeSet
1) HashSet
比TreeSet
为add
,remove
,contains
,size
等操作提供更好的性能(更快)。HashSet
提供恒定的时间成本,而对于这样的操作TreeSet
提供log(n)
时间成本。
2)HashSet
不维护任何元素顺序,而TreeSet
元素默认按升序排序。
相似之处:
1)HashSet
和TreeSet
都不包含重复元素,这意味着它们都是重复的。
2)如果你想要一个有序的Set
,那么最好将元素添加到HashSet
然后将其转换为TreeSet
,而不是创建一个TreeSet
并向其添加元素。
3)这两个类都是非同步的,这意味着它们不是线程安全的,并且在需要线程安全操作时应该显式同步。
HashSet
示例
import java.util.HashSet;
class HashSetDemo{
public static void main(String[] args) {
// Create a HashSet
HashSet<String> hset = new HashSet<String>();
//add elements to HashSet
hset.add("Abhijeet");
hset.add("Ram");
hset.add("Kevin");
hset.add("Singh");
hset.add("Rick");
// Duplicate removed
hset.add("Ram");
// Displaying HashSet elements
System.out.println("HashSet contains: ");
for(String temp : hset){
System.out.println(temp);
}
}
}
输出:
HashSet contains:
Rick
Singh
Ram
Kevin
Abhijeet
TreeSet
示例
import java.util.TreeSet;
class TreeSetDemo{
public static void main(String[] args) {
// Create a TreeSet
TreeSet<String> tset = new TreeSet<String>();
//add elements to TreeSet
tset.add("Abhijeet");
tset.add("Ram");
tset.add("Kevin");
tset.add("Singh");
tset.add("Rick");
// Duplicate removed
tset.add("Ram");
// Displaying TreeSet elements
System.out.println("TreeSet contains: ");
for(String temp : tset){
System.out.println(temp);
}
}
}
输出:元素按升序排序。
TreeSet contains:
Abhijeet
Kevin
Ram
Rick
Singh