天天看點

java 集合 唯一_Java ArrayList集合 資料唯一性

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 可以嗎

要是可以請告訴在下怎麼寫 謝謝啊

展開