package cn.itcast.bean; public class Person { private String name; private int age; public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } public Person(String name, int age) { super(); this.name = name; this.age = age; } }
===============================================================分割线================================================================
package cn.itcast.treeset.demo2; import java.util.Comparator; import cn.itcast.bean.Person; /** * * 创建了一个根据Person类的name进行排序的比较器。 * */ public class ComparatorByName implements Comparator{ /*查找API中java.util中TreeSet类,发现构造函数TreeSet(Comparator),发现Comparator是一个接口,可以将对象排序 * * 也是强制复写compare方法 */ public int compare(Object o1,Object o2){ Person p1 = (Person)o1; Person p2 = (Person)o2; int temp = p1.getName().compareTo(p2.getName()); return temp==0?p1.getAge()-p2.getAge():temp; } }===============================================================分割线================================================================
package cn.itcast.treeset.demo2; import java.util.Iterator; import java.util.TreeSet; import cn.itcast.bean.Person; public class TreeSetDemo2 { public static void main(String[] args) { TreeSet ts = new TreeSet(new ComparatorByName()); ts.add(new Person("zhangsan", 28)); ts.add(new Person("lisi", 21)); ts.add(new Person("zhouqi", 29)); ts.add(new Person("zhaoliu", 25)); ts.add(new Person("wangwu", 29)); Iterator it = ts.iterator(); while (it.hasNext()) { Person p = (Person) it.next(); System.out.println(p.getName() + ":" + p.getAge()); } } }