Java Comparator

Java Comparator 只有一個抽象方法的接口,定義了 compare 方法,可以在一個元素上測試或應用一些操作,常用於集合或陣列比較元素,例如:從小到大或大到小排序, Comparator Learn Java 增加了範例及各種實作的操作方法,透過單元測試來驗證產出結果。

o1 大於 o2 傳回 1 。
o1 等於 o2 傳回 0 。
o1 小於 o2 傳回 -1 。

@FunctionalInterface
public interface Comparator<T> {
    int compare(T o1, T o2);
} 

Comparator Learning Java

屬於 java.util ,常用於集合或陣列比較元素,使用 Lambda 表達式能讓程式碼更加簡潔與直接,取代傳統實作接口的方法,減少了很多程式碼,可以使用 thenComparing 組合成鏈式判斷,大幅提高可讀性,Java Comparator Course 單獨測試一個程式、過程或方法,進行正確性驗證的測試。

Initialize Comparator

使用傳統方式或 Lambda 表達式建立比較器,學習 Comparator 的操作及應用。

List<String> list = Arrays.asList("Orange", "Mango", "Peach");
Collections.sort(list, Comparator.comparing(String::length));	
Collections.sort(list, (s1, s2) -> s1.length() - s2.length());

protected static Comparator<String> nameComparator = new Comparator<String>() {
	@Override
	public int compare(String s1, String s2) {
		return s1.compareTo(s2);
	}
};

protected static Comparator<String> lengthComparator = (s1, s2) -> Integer.compare(s1.length(), s2.length());
Collections.sort(list, nameComparator.thenComparing(lengthComparator));	
[Mango, Peach, Orange]
[Mango, Peach, Orange]
[Mango, Orange, Peach]

Java Comparator Tutorial