Giriş
Bu sınıf yerine Java 8 ile gelen
Comparator rahatlıkla kullanılabilir.
allEqual metodu Tüm elemanlar eşit kabul eder.
Örnek
Şöyle
yaparız. Tüm elemanları eşit kabul ettiği için true döner.
ArrayList<Integer> arrayList = Arrays.asList(1,3,2);
assertTrue(Ordering.allEqual().reverse().isOrdered(arrayList));
explicit metoduonResultOf() çağrısının döndürdüğü sonucun, belirtilen listedeki indeksini döndürür.
Örnek
getStatus() sonucu 1 olanlar ilk, 0 olanlar ikinci, 5 olanlar üçüncü sırada olsun istersek şöyle
yaparız.
users.sort(Ordering
.explicit(1, 0, 5)
.onResultOf(User::getStatus)
.thenComparing(User::getUsername));
Örnek
Şöyle
yaparız. onResultOf() eğer string listede yoksa "OTHERS" döndürür. Onun da konumu 0'dır.
List<String> currencies = ImmutableList.of("OTHERS", "PLN","EUR","USD","GBP", "CHF");
Ordering<String> currencyOrdering = Ordering.explicit(currencies)
.onResultOf(lang -> currencies.contains(lang) ? lang : "OTHERS");
System.out.println(currencyOrdering.compare("JPY", "PLN")); // -1
System.out.println(currencyOrdering.compare("JPY", "TTT")); // 0
System.out.println(currencyOrdering.compare("CHF", "GBP")); // 1
Aslında bu kadar karmaşık yapmak yerine sadece Java kullanarak şöyle
yaparızList<String> currencies = List.of("PLN","EUR","USD","GBP", "CHF");
Comparator<Object> objectComparator = Comparator.comparingInt(currencies::indexOf);
System.out.println(objectComparator.compare("JPY", "PLN")); //-1
System.out.println(objectComparator.compare("JPY", "TTT")); //0
System.out.println(objectComparator.compare("CHF", "GBP")); //1
isOrdered metodu - Iterable
Örnek
Elimizde bir Comparator
olsun.
public Comparator<String> getComparator() {
return new Comparator<String>() {
@Override
public int compare(String o1, String o2) {
...
}
};
}
Şöyle
yaparız
public boolean isOrdered(List<String> list) {
return Ordering.from(getComparator()).isOrdered(list);
}
natural metodu
Şöyle
yaparız. Normal compare() metodu çağrılır. Daha sonra sıralanmış listeden en küçük elemen seçilir.
return Ordering.natural().nullsLast().min(discontinueDate, actualTerminateDate);
sortedCopy metodu
Collections.sort() metodu girdi nesneyi değiştirir. Farklı bir kopya almak için şöyle
yaparız.
List<string> sorted = Ordering.natural().sortedCopy(strings);