Java 集合 HashSet和TreeSet的区别

来源:这里教程网 时间:2026-02-17 20:13:31 作者:

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

相关推荐