一、TreeSet
Java的TreeSet通过TreeMap来实现,具有自然排序的功能。
在默认情况下,元素不允许为null值,元素必须是相同类型,元素必须实现了Comparable接口;否则会出现java.lang.ClassCastException。
可以通过设置Comparator接口的实例,来实现元素允许为null值,元素为不同类型。
二、代码实现
(1)默认情况
TreeSet treeSet=new TreeSet();treeSet.add(1);treeSet.add(2.0);
输出结果
Exception in thread "main" java.lang.ClassCastException: java.lang.Integer cannot be cast to java.lang.Doubleat java.lang.Double.compareTo(Unknown Source)at java.util.TreeMap.put(Unknown Source)at java.util.TreeSet.add(Unknown Source)at cn.test.Test.main(Test.java:9)
(2)null值
TreeSet treeSet=new TreeSet((o1,o2)->{return Objects.toString(o1).compareTo(Objects.toString(o2));});treeSet.add(1);treeSet.add(null);
(3)不同类型
TreeSet treeSet=new TreeSet((o1,o2)->{return Double.valueOf(o1.toString()).compareTo(Double.valueOf(o2.toString()));});
treeSet.add(1);
treeSet.add(2.0);