在本文中,我们将讨论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
极客教程