Java HashSet转换为TreeSet
哈希集: Java中的哈希集一般用于搜索、插入和删除等操作。平均来说,这些操作需要持续的时间。HashSet比TreeSet快。HashSet是用一个哈希表实现的。
TreeSet: Java中的TreeSet用于搜索、插入和删除需要O(log n),比HashSet高。但是TreeSet保持排序的数据。此外,它还支持像higher()(返回最少的高元素)、floor()、 ceiling()等操作。这些操作在TreeSet中也是O(log n),在HashSet中不支持。TreeSet是用自平衡二进制搜索树(Red-Black Tree)实现的。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 。
通过调用参数化构造函数并将哈希集的对象作为参数发送给它。
- 首先,我们要为哈希集创建一个对象。
- 然后我们要把所有的元素添加到哈希集合中。
- 最后,为树形集合创建一个对象,并将哈希集合对象发送给它。
下面是上述方法的实现。
程序:
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方法构建一个树形集合,其中包含与哈希集合中存在的相同元素。
- 首先,我们要为哈希集创建一个对象。
- 然后我们必须把所有的元素添加到哈希集。
- 现在为树集创建一个对象。
- 使用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循环。 (这种方法通常用于两种不兼容类型之间的转换。)
-
首先,我们必须为哈希集创建一个对象。
- 然后,我们必须将所有的元素添加到哈希集中。
- 现在为树集创建一个对象。
- 最后,通过使用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]