有程式碼帶一些疑問。
MyData d1 = new MyData();
MyData d2 = new MyData();
List<MyData> dataList = new ArrayList<MyData>();
做sorting,
應排序在dataList內d1和d2的相對位置,誰前誰後。
所以當MyData裡面有7個int當可能的排序判斷條件,
又Override Comparator裡的int compare(T o1, T o2),
: @Override
: public int compare(MyData lhs, MyData rhs) {
: return (lhs.i > rhs.i);
: }
成立的(除了型態檢查錯誤以外,後講)
但對於7次很奇怪,
問題在於
d1.i = 1;
d2.i = 2;
d1.j = 2;
d2.j = 1;
的時候會有問題。
所以
觀念上應為
將MyData之間做比較
class MyData
{
public int i, j, k, l, m, n, o; // 七組資料
public int compareTo(MyData rhs) {
return (this.i - rhs.i) >= 0 ? 1 : 0;
// boolean理應無法轉int, 故三元運算式是一種改法
}
};
然後
Collections.sort(dataList, new Comparator<MyData>() {
public int compare(MyData o1, MyData o2) {
return o1.compareTo(o2);
}
});
對於那個7次問題但條件衝突仍要解決,
也可能我功力不夠無法理解7次如何處理,
可能條件之間具有優先性。
但相信應該是在class MyData的
public int compareTo(MyData rhs) {
return (this.i - rhs.i) >= 0 ? 1 : 0;
// boolean理應無法轉int, 故三元運算式是一改法
}
寫得更多條件的處理。