package Li; import java.util.ArrayList; import java.util.HashSet; import java.util.Iterator; import java.util.TreeSet; public class Hello { public static void main(String[] args){ TreeSet ar = new TreeSet(); ar.add(new Person("lisi",24)); ar.add(new Person("zhangsan",20)); ar.add(new Person("wangwu",22)); ar.add(new Person("wangwa",22)); for(Iterator it = ar.iterator();it.hasNext();){ Person p =(Person)it.next(); op(p.getName()+":::"+p.getAge()); } } public static void op(Object object){ System.out.println(object); } }
package Li; import java.net.SocketPermission; public class Person implements Comparable{ private String name; private int age; Person(String name,int age){ this.age = age; this.name = name; } public int compareTo(Object obj){ if(!(obj instanceof Person)) throw new RuntimeException("obj不是Person对象"); Person p = (Person)obj; if(this.age>p.age) return 1; if(this.age==p.age){ return this.name.compareTo(p.name); } return -1; } public String getName(){ return this.name; } public int getAge(){ return this.age; } public int hashCode(){ return name.hashCode()+age*39; } public boolean equals(Object obj){ if(!(obj instanceof Person)) return false; Person p = (Person)obj; return this.age == p.age && this.name.equals(p.name); } }
Person 实现comparable接口,覆盖compareTo方法。