import java.util.HashSet;
import java.util.Iterator;
import java.util.Set;
class Person2 implements Comparable{
private int id;
private String name;
private int age;
public Person2(){
}
public Person2(int id, String name, int age) {
super();
this.id = id;
this.name = name;
this.age = age;
}
public boolean equals(Object o){
Person2 p1 = (Person2)o;
return id==p1.id&&age==p1.age && name.equals(p1.name);
}
public String toString(){
return id+"--"+ name+"--"+ age;
}
public int hashCode(){
return id*age*name.hashCode();
}
@Override
public int compareTo(Object o) {
Person2 p = (Person2)o;
if(this.id>p.id){
return 1;
}else if(this.id<p.id){
return -1;
}else{
return 0;
}
}
}
public class TestHashSet {
public static void main(String[] args) {
Set set = new HashSet();
set.add(new Person2(1,"zhangshan",15));
set.add(new Person2(1,"zhangshan",15));
set.add(new Person2(2,"lisi",15));
set.add(new Person2(3,"li",35));
for(Iterator it=set.iterator();it.hasNext();){
System.out.println(it.next());
}
}
}
输出结果是:、
2--lisi--15
1--zhangshan--15
3--li--35
------最佳解决方案--------------------------------------------------------
HashSet是散列分布的,不是顺序的,你可以试试TreeSet
------其他解决方案--------------------------------------------------------
HashSet由哈希表(实际上是一个 HashMap 实例)支持。它不保证 set 的迭代顺序;特别是它不保证该顺序恒久不变。hashSet并不会按照比较器进行比较排序,你要排序的请使用TreeSet 。API中有更详细的说明
------其他解决方案--------------------------------------------------------
+1,正解,输出。
1--zhangshan--15
2--lisi--15
3--li--35
------其他解决方案--------------------------------------------------------
1楼正解~~~
------其他解决方案--------------------------------------------------------
膜拜一下一楼。。。。。
------其他解决方案--------------------------------------------------------
我实现Comparable接口重写compareTo方法就是为了通过比较让他按序输出啊!还是有点不理解。
------其他解决方案--------------------------------------------------------
哦,了解了!谢谢各位。