在本文中,我们将讨论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: RickSinghRamKevinAbhijeet
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: AbhijeetKevinRamRickSingh
