TreeSet提供Set接口的实现,该接口使用树进行存储。对象按排序和升序存储。
访问和检索时间非常快,这使得TreeSet在存储必须快速找到的大量排序信息时成为绝佳的选择。
原因是,如果您查看TreeSet的内部实现,它使用自然排序,这意味着TreeSet默认情况下使用Comparable接口通过比较其他值对它的值进行排序。
示例public class TreeSetDemo {
public static void main(String args[]) {
TreeSet treeSet = new TreeSet();
treeSet.add("Apple");
treeSet.add("Mango");
treeSet.add("Orage");
treeSet.add("grapes");
treeSet.add("Banana");
System.out.println(treeSet);
}
}
输出结果[Apple, Banana, Mango, Orage, grapes]
向树集添加空值
TreeSet根据其自然顺序向其中添加元素。这将使用compareTo(或compare)方法在内部将元素相互比较。
如果尝试使用这些方法之一比较具有空值的任何对象,则将引发NullPointerException。
因此,如果尝试将空值添加到TreeSet,则它将在运行时生成NullPointerException。
示例import java.util.Set;
import java.util.TreeSet;
public class TreeSetExample {
public static void main(String args[]) {
Set treeSet = new TreeSet();
//填充HashSet-
treeSet.add(1124);
treeSet.add(3654);
treeSet.add(7854);
treeSet.add(9945);
System.out.println(treeSet);
//添加空元素
treeSet.add(null);
treeSet.add(null);
treeSet.add(null);
System.out.println(treeSet);
}
}
运行时异常Run time exception:
[1124, 3654, 7854, 9945]
Exception in thread "main" java.lang.NullPointerException
at java.util.TreeMap.put(Unknown Source)
at java.util.TreeSet.add(Unknown Source)
at MyPackage.TreeSetExample.main(TreeSetExample.java:16)