import java.util.*;
class Animal
{
String name;
int age;
public Animal(String name, int age) {
this.name = name;
this.age = 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;
}
@Override
public String toString() {
return "动物:"+getName()+".."+getAge();
}
}
class Dog extends Animal
{
public Dog(String name, int age) {
super(name, age);
}
@Override
public String getName() {
return super.getName();
}
@Override
public void setName(String name) {
super.setName(name);
}
@Override
public int getAge() {
return super.getAge();
}
@Override
public void setAge(int age) {
super.setAge(age);
}
@Override
public String toString() {
return "狗:"+getName()+".."+getAge();
}
}
class Cat extends Animal
{
public Cat(String name, int age) {
super(name, age);
}
@Override
public String getName() {
return super.getName();
}
@Override
public void setName(String name) {
super.setName(name);
}
@Override
public int getAge() {
return super.getAge();
}
@Override
public void setAge(int age) {
super.setAge(age);
}
@Override
public String toString() {
return "猫:"+getName()+".."+getAge();
}
}
class CmpAni implements Comparator<Animal>
{
@Override
public int compare(Animal o1, Animal o2) {
int temp=o1.getName().compareTo(o2.getName());
return temp==0?o1.getAge()-o2.getAge():temp;
}
}
class treeSet<Dog> extends TreeSet<Dog>
{
public treeSet(Comparator<? super Dog> comparator) {
super(comparator);
}
}
class Main
{
public static void main(String args[])
{
treeSet<Animal> a=new treeSet<Animal>(new CmpAni());
a.add(new Animal("神奇的动物",12));
a.add(new Animal("神奇的动物啊",14));
a.add(new Animal("神奇的动",7));
treeSet<Dog> d=new treeSet<Dog>(new CmpAni());
d.add(new Dog("神奇的狗",13));
d.add(new Dog("旺财",3));
show(a);
show(d);
}
public static void show(Collection<? super Dog> a)
{
Iterator<? super Dog> i=a.iterator();
while(i.hasNext())
{
System.out.println(i.next().toString());
}
}
}
运行结果: