基本观点
- HashSet:无序
- LinkedHashSet:按插入排序
- TreeSet:按自然顺序
主要讲 TreeSet 的自然顺序
基本类型的自然排序
TreeSet tree = new TreeSet(); tree.add(12); tree.add(63); tree.add(34); tree.add(45); Iterator iterator = tree.iterator(); System.out.print("Tree set data: "); while (iterator.hasNext()) { System.out.print(iterator.next() + " "); }
输出结果:Tree set data: 12 34 45 63
类对象的自然排序
class Dog { int size; public Dog(int s) { size = s; } public String toString() { return size + ""; } }
import java.util.Iterator; import java.util.TreeSet; public class TestTreeSet { public static void main(String[] args) { TreeSet dset = new TreeSet(); dset.add(new Dog(2)); dset.add(new Dog(1)); dset.add(new Dog(3)); Iterator iterator = dset.iterator(); while (iterator.hasNext()) { System.out.print(iterator.next() + " "); } } }
结果
Exception in thread "main" java.lang.ClassCastException: collection.Dog cannot be cast to java.lang.Comparable at java.util.TreeMap.put(Unknown Source) at java.util.TreeSet.add(Unknown Source) at collection.TestTreeSet.main(TestTreeSet.java:22)
Dog 类实现 Comparable 接口和 compareTo 方法
class Dog implements Comparable{ int size; public Dog(int s) { size = s; } public String toString() { return size + ""; } @Override public int compareTo(Dog o) { return size - o.size; } }
输出
1 2 3
欢迎来到这里!
我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。
注册 关于