当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


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。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。