在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使用平衡二叉搜索树(红黑树)实现。在Java中,TreeSet由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:
- 通过调用带参数的构造函数并将Hash set对象作为参数发送给它。
- 首先,我们必须创建一个哈希集对象。
- 然后将所有元素添加到哈希集中。
- 最后,创建一个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方法构造一个包含与哈希集中相同元素的树集。
- 首先,我们必须为哈希集创建一个对象。
- 然后,我们必须将所有元素添加到哈希集中。
- 现在为treeset创建一个对象。
- 使用addAll方法将哈希集的所有元素添加到其中。
下面是上述方法的实现:
程序:
import java.util.HashSet;
import java.util.Set;
import java.util.TreeSet;
public class GFG {
public static void main(String[] args)
{
// 获取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);
// 将HashSet转换为TreeSet
Set<String> hashSetToTreeSet
= new TreeSet<>();
hashSetToTreeSet.addAll(setobj);
// 打印TreeSet
System.out.println("TreeSet: "
+ hashSetToTreeSet);
}
}
输出:
HashSet: [Geeks, For, Welcome, To]
TreeSet: [For, Geeks, To, Welcome]
- 通过使用foreach循环。 (此方法通常用于在两种不兼容的类型之间进行转换。)
-
首先,我们必须为哈希集创建一个对象。
- 然后,我们必须将所有元素添加到哈希集中。
- 现在为treeset创建一个对象。
- 最后,通过使用foreach循环将哈希集的所有元素添加到树集中。
下面是上述方法的实现:
程序:
import java.util.HashSet;
import java.util.Set;
import java.util.TreeSet;
public class GFG {
public static void main(String[] args)
{
// 获取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);
// 将HashSet转换为TreeSet
Set<String> hashSetToTreeSet
= new TreeSet<>();
for (String i : setobj)
hashSetToTreeSet
.add(i);
// 打印TreeSet
System.out.println("TreeSet: "
+ hashSetToTreeSet);
}
}
HashSet: [Geeks, For, Welcome, To]
TreeSet: [For, Geeks, To, Welcome]
极客教程