Java TreeMap和TreeSet的区别
TreeSet 主要是java中SortedSet的一个实现,其中不允许重复,对象以排序和升序的方式存储。
树组的一些重要特征是:
- 在TreeSet中不允许有重复的值,因为它实现了SortedSet接口。
- TreeSet中的对象是按升序存储的。
- 在TreeSet中,元素的插入顺序并不保持。
TreeMap 是Map接口的一个实现。TreeMap也是NavigableMap和AbstractMap类的一个实现。
树状图的一些重要特征是:_
- 在TreeMap中,不允许出现空键(像Map),因此会抛出NullPointerException(多个空值可能与不同的键相关)。
- TreeMap不支持Entry.setValue方法。
下面是Java中TreeSet和TreeMap的图示。
示例 1:
// Illustration of TreeMap and TreeSet in Java
import java.io.*;
import java.util.*;
class GFG {
public static void main(String[] args)
{
TreeSet<Integer> set = new TreeSet<>();
set.add(3);
set.add(4);
set.add(3);
set.add(5);
TreeMap<Integer, Integer> tm = new TreeMap<>();
tm.put(2, 4);
tm.put(3, 5);
tm.put(4, 5);
tm.put(2, 3);
System.out.println(set);
System.out.println(tm);
}
}
输出
[3, 4, 5]
{2=3, 3=5, 4=5}
示例 2:
// Illustration of TreeMap and TreeSet in Java
import java.io.*;
import java.util.*;
class GFG {
public static void main(String[] args)
{
TreeSet<String> l = new TreeSet<>();
l.add("geeks");
l.add("FOR");
l.add("geeks");
l.add("tutorial");
TreeMap<Integer, String> l1 = new TreeMap<>();
l1.put(1, "geeks");
l1.put(2, "FOR");
l1.put(3, "geeks");
l1.put(4, "tutorial");
System.out.println(l);
System.out.println(l1);
}
}
输出
[FOR, geeks, tutorial]
{1=geeks, 2=FOR, 3=geeks, 4=tutorial}
S.No. | TreeSet | TreeMap |
---|---|---|
1. | TreeSet在Java中实现了SortedSet。 | 树状图在Java中实现了Map接口 |
2. | TreeSet在java中存储了一个单一的对象。 | TreeMap存储了两个对象,一个键和一个值。 |
3. | TreeSet不允许重复java中的Object。 | java中的TreeMap允许值的重复。 |
4. | TreeSet在Java中实现了NavigableSet。 | TreeMap在Java中实现了NavigableMap。 |
5. | TreeSet是根据对象来排序的。 | TreeMap是根据键来排序的。 |