### Sorting 排序資料很多時都會在程式中出現,今天要記下的事是在 Android (Java) 把 Array 排序。 排序的概念大約是把 Array 內的 Elements 依一個特定的規則來排好,例如數字由大至細。 下是是 Javascript 的例子 : ```javascript // data var data = [5, 2, 3, 4, 1]; // data sort data.sort(); // print data console.log(data); > 1,2,3,4,5 ``` 預設的 Sort 大約會有以上的效果,它可以自動理解 data type 然後進行排序。如果遇到不會處理的 Data type,就只好使用 `toString()` 方法來取出字串。 ### 自訂排序的方法 上面提到我們可以自訂排序的方法,可以透過傳入一個 function 來處理排序的邏輯。 ```javascript // data var data = [5, 2, 3, 4, 1]; // data sort data.sort((a, b) => { if( a > b ) { return 1; } if( a < b ) { return -1; } else { return 0; } }); // print data console.log(data); > 1,2,3,4,5 ``` 我們傳入的方法只需要告訴排序程式當遇到兩者要比較時的結果,而回傳就通常時 -1, 0, 和 1 三個值。 ### 在 Java 上實作 以下的代碼是在 Java 上實作的例子 : ```java // array data int[] data = new int[]{4, 2, 5, 1, 3}; // do sort data Arrays.sort(data, new Comparator<Integer>() { @Override public int compare(int a, int b) { if( a > b ) { return 1; } if( a < b ) { return -1; } else { return 0; } } }); ``` 透過使用 interface (Comparator) 來告訴 sort 是怎樣進行的。