這是一個用多個字段進行排序的例子。這裏的實現是根據緯度,經度和高度進行排序。
public class LatLongHt implements Comparable<LatLongHt> {
public double lat,lng,ht;
public LatLongHt(double latitude, double longitude, double ht2) {
this.lat=latitude;
lng=longitude;
ht=ht2;
}
@Override
public int compareTo(LatLongHt obj) {
int result;
if((result=compareValue(this.lat,obj.lat))==0)
if((result=compareValue(this.lng, obj.lng))==0)
result=compareValue(this.ht, obj.ht);
return result;
}
private int compareValue(double val1, double val2) {
if(val1==val2)
return 0;
if(val1>val2)
return 1;
return -1;
}
@Override
public String toString(){
return "("+lat+','+lng+','+ht+')';
}
@ Override
public boolean equals(Object o){
if(!(o instanceof LatLongHt))
return false;
LatLongHt that=(LatLongHt)o;
return that.lat==this.lat && that.lng==this.lng && that.ht==this.ht;
}
@Override
public int hashCode() {
int result=11;
result=(int)(31*result+Double.doubleToLongBits(lat));
result=(int)(31*result+Double.doubleToLongBits(lng));
result=(int)(31*result+Double.doubleToLongBits(ht));
return result;
}
}
我希望這將有助於你如何與多個字段排序,以得到一個想法,然後works.You可以根據自己的需要寫一個比較。
[最好的方法來比較對象的多個字段?](http://stackoverflow.com/questions/369512/best-way-to-compare-objects-by-multiple-fields) – dogbane 2011-03-07 11:20:09
umm所以創建另一個比較對象似乎是要走的路?或將使用枚舉工作呢?枚舉方法看起來更好 – user648036 2011-03-07 11:24:20