### 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 是怎樣進行的。