TreeSet 使用举例

TreeSet  中添加的元素应该是实现了 Colparable 接口的,在向TreeSet中添加元素是没有序列,在使用迭代器取元素时,是排好序的,排序规则是按照元素中 compareTo 方法排序,如果要是向TreeSet 加入自己创建的类对象,应该实现 Comparable 接口

 

 

 

// TreeSetTest.java // 实现 Comparable 接口 , 重写CompareTo 方法 ,在 TreeSet 中实现按姓名和年龄排序 import java.util.*; public class TreeSetTest { public static void main(String [] args){ TreeSet dogs=new TreeSet(); dogs.add(new Dog("aa",2)); dogs.add(new Dog("ds",3)); dogs.add(new Dog("fa",2)); dogs.add(new Dog("aa",1)); dogs.add(new Dog("dd",4)); dogs.add(new Dog("ha",3)); dogs.add(new Dog("aa",7)); dogs.add(new Dog("ba",3)); dogs.add(new Dog("ab",3)); dogs.add(new Dog("aa",5)); // for(Iterator i=dogs.iterator();i.hasNext();) // System.out.println(i.next()); } } class Dog implements Comparable { private String name; private int age; public Dog(String name,int age){ this.name =name; this.age=age; } public int compareToAge(Object o){ // age 排序原则 Dog d=(Dog) o; if(this.name.equals(d.name) && this.age == d.age) return 0; if(this.age > d.age) return 1; return -1; } public int compareTo(Object o){ System.out.println("==========="); Dog d=(Dog) o; if(this.name.compareTo(d.name) == 0) // 如果 name 相同 按 age 排序 return this.name.compareTo(d.name) + compareToAge(d); return this.name.compareTo(d.name); // 按 name 排序 } public String toString(){ return name + " " + age; } }

 

输出结果: 

 

 

另一种更简单的改写方法:

 

 

 

 

 

 

 

你可能感兴趣的:(TreeSet 使用举例)