[英]Is this a correct way of sorting by title, position and then order by using a Comparator?
考慮這個課程。
public class DynamicField implements Comparable<DynamicField> {
String title;
int position;
int order;
@Override
public int compareTo(DynamicField o) {
if(position < o.position)
return -1;
if(position > o.position)
return 1;
if(order < o.order)
return -1;
if(order > o.order)
return 1;
return title.compareTo(o.title);
}
}
如果要按標題,位置然后按順序排序,compareTo方法是否正確?
否,請嘗試更新此代碼
public class DynamicField implements Comparable<DynamicField> {
String title;
int position;
int order;
@Override
public int compareTo(DynamicField o) {
int result = title.compareTo(o.title);
if(result != 0) {}
else if(position != o.position)
result = position-o.position;
else if(order != o.order)
result = order- o.order;
return result;
}
}
不,您以不正確的順序進行比較。 重新排列比較順序將使其起作用:
@Override
public int compareTo(DynamicField o) {
int c = title.compareTo(o.title);
if (c != 0)
return c;
if(position < o.position)
return -1;
if(position > o.position)
return 1;
if(order < o.order)
return -1;
if(order > o.order)
return 1;
return 0;
}
這實際上與@ org.life.java的答案相同。 不過,您可能會發現這更可口。
@Override
public int compareTo() {
int result = title.compareTo(o.title);
if (result == 0)
result = position - o.position;
if (result == 0)
result = order - o.order;
return result;
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.