日期:2014-05-20  浏览次数:20657 次

比较两个对象是否相等添加到set中排序的问题

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中有更详细的说明
------其他解决方案--------------------
引用:
HashSet是散列分布的,不是顺序的,你可以试试TreeSet


+1,正解,输出。
1--zhangshan--15
2--lisi--15
3--li--35
------其他解决方案--------------------
1楼正解~~~
------其他解决方案--------------------
膜拜一下一楼。。。。。
------其他解决方案--------------------
引用:
Java code
?



12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667

import java.util.HashSet; import java.util.Iterator……

我实现Comparable接口重写compareTo方法就是为了通过比较让他按序输出啊!还是有点不理解。
------其他解决方案--------------------
引用:
引用:
Java code
?



12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667

import java.util.HashSet; import……
哦,了解了!谢谢各位。