當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


Java HashSet轉TreeSet用法及代碼示例


Hashset:Java中的Hashset一般用於搜索、插入、刪除等操作。這些操作平均需要恒定的時間。 HashSet 比 TreeSet 快。 HashSet 是使用哈希表實現的。

TreeSet:Java 中的 TreeSet 查找、插入和刪除的時間為 O(log n),高於 HashSet。但是 TreeSet 保持排序的數據。此外,它還支持 higher()(返回最低高元素)、floor()、ceiling() 等操作。這些操作在 TreeSet 中也是 O(log n),在 HashSet 中不支持。 TreeSet 是使用自平衡二叉搜索樹(Red-Black 樹)實現的。 TreeSet 由 Java 中的 TreeMap 支持。

一般來說,如果您想要一個排序集,那麽最好將元素添加到 HashSet 然後將其轉換為 TreeSet,而不是創建 TreeSet 並向其添加元素。

給定一個 HashSet,任務是將其轉換為 Java 中的 TreeSet。

例子:



HashSet:[Geeks, For, Welcome, To]
TreeSet:[For, Geeks, To, Welcome]

HashSet:[1, 2, 3, 4, 5]
TreeSet:[1, 2, 3, 4, 5]

我們可以通過以下方式將 HashSet 轉換為 TreeSet:

  • 通過調用參數化構造函數並將哈希集的對象作為參數發送給它。
    1. 首先,我們必須為哈希集創建一個對象。
    2. 然後我們必須將所有元素添加到哈希集中。
    3. 最後,為樹集創建一個對象並將哈希集對象發送給它。

    下麵是上述方法的實現:

    程序:

    
    import java.util.HashSet;
    import java.util.Set;
    import java.util.TreeSet;
      
    public class GFG {
      
        public static void main(String[] args)
        {
      
            // Get the HashSet
            Set<String> setobj = new HashSet<>();
            setobj.add("Welcome");
            setobj.add("To");
            setobj.add("Geeks");
            setobj.add("For");
            setobj.add("Geeks");
      
            System.out.println("HashSet:"
                               + setobj);
      
            // Convert the HashSet to TreeSet
            Set<String> hashSetToTreeSet
                = new TreeSet<>(setobj);
      
            // Print the TreeSet
            System.out.println("TreeSet:"
                               + hashSetToTreeSet);
        }
    }
    輸出:
    HashSet:[Geeks, For, Welcome, To]
    TreeSet:[For, Geeks, To, Welcome]
    
  • 通過使用 addAll 方法構造包含哈希集中存在的相同元素的樹集。
    1. 首先,我們必須為哈希集創建一個對象。
    2. 然後我們必須將所有元素添加到哈希集中。
    3. 現在為 treeset 創建一個對象。
    4. 使用 addAll 方法將哈希集的所有元素添加到它。

    下麵是上述方法的實現:

    程序:

    
    import java.util.HashSet;
    import java.util.Set;
    import java.util.TreeSet;
      
    public class GFG {
      
        public static void main(String[] args)
        {
      
            // Get the HashSet
            Set<String> setobj = new HashSet<>();
            setobj.add("Welcome");
            setobj.add("To");
            setobj.add("Geeks");
            setobj.add("For");
            setobj.add("Geeks");
      
            System.out.println("HashSet:"
                               + setobj);
      
            // Convert the HashSet to TreeSet
            Set<String> hashSetToTreeSet
                = new TreeSet<>();
            hashSetToTreeSet.addAll(setobj);
      
            // Print the TreeSet
            System.out.println("TreeSet:"
                               + hashSetToTreeSet);
        }
    }
    輸出:
    HashSet:[Geeks, For, Welcome, To]
    TreeSet:[For, Geeks, To, Welcome]
    
  • 通過使用 for each 循環。(此方法常用於兩種不兼容類型之間的轉換。)
    1. 首先,我們必須為哈希集創建一個對象。
    2. 然後我們必須將所有元素添加到哈希集中。
    3. 現在為 treeset 創建一個對象。
    4. 最後,通過使用 for each 循環將哈希集的所有元素添加到樹集中。

    下麵是上述方法的實現:

    程序:

    
    import java.util.HashSet;
    import java.util.Set;
    import java.util.TreeSet;
      
    public class GFG {
      
        public static void main(String[] args)
        {
      
            // Get the HashSet
            Set<String> setobj = new HashSet<>();
            setobj.add("Welcome");
            setobj.add("To");
            setobj.add("Geeks");
            setobj.add("For");
            setobj.add("Geeks");
      
            System.out.println("HashSet:"
                               + setobj);
      
            // Convert the HashSet to TreeSet
            Set<String> hashSetToTreeSet
                = new TreeSet<>();
            for (String i:setobj)
                hashSetToTreeSet
                    .add(i);
      
            // Print the TreeSet
            System.out.println("TreeSet:"
                               + hashSetToTreeSet);
        }
    }
    輸出:
    HashSet:[Geeks, For, Welcome, To]
    TreeSet:[For, Geeks, To, Welcome]
    




相關用法


注:本文由純淨天空篩選整理自suman_ptnl大神的英文原創作品 Convert HashSet to TreeSet in Java。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。