importjava.util.*;publicclassTest4{publicstaticvoidmain(String[]args){Listlist=newArrayList();list.add(newPerson4("aa",54));list.add(newPerson4("cc",44)...
import java.util.*;
public class Test4 {
public static void main(String[] args)
{
List list = new ArrayList();
list.add(new Person4("aa", 54));
list.add(new Person4("cc", 44));
list.add(new Person4("bb", 70));
list.add(new Person4("bb", 70));
list.add(new Person4("ab", 70));
Collections.sort(list,new Comparator()
{
@Override
public int compare(Person4 p1, Person4 p2)
{
int num = new Integer(p1.getAge()).compareTo(new Integer(p2.getAge()));
if(num == 0)
return p1.getName().compareTo(p2.getName());
return num;
}
});
for(Person4 p : list)
System.out.println(p);
}
}
class Person4 implements Comparable
{
private String name;
private int age;
Person4(String name,int age)
{
this.name = name;
this.age = age;
}
public String getName() {
return name;
}
public int getAge() {
return age;
}
public String toString()
{
return name+" "+age;
}
public int hashCode()
{
return this.name.hashCode()+age*17;
}
public boolean equals(Object obj)
{
if((obj instanceof Person1))
throw new RuntimeException("類型不比對");
Person4 p = (Person4)obj;
return this.name.equals(p.name) && this.age == p.age;
}
@Override
public int compareTo(Person4 p)
{
int num = new Integer(this.age).compareTo(new Integer(p.age));
if(num == 0)
return this.name.compareTo(p.name);
return num;
}
}
我現在輸出來 同名用年齡的也一起輸出來了
怎麼樣確定唯一性呢
不借助 HashMap 和TreeMap 可以嗎
要是可以請告訴在下怎麼寫 謝謝啊
展開