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.
isOrdered metodu - Iterable
Örnek
Elimizde bir Comparator olsun.
Şöyle yaparız. Normal compare() metodu çağrılır. Daha sonra sıralanmış listeden en küçük elemen seçilir.
Collections.sort() metodu girdi nesneyi değiştirir. Farklı bir kopya almak için şö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ız
List<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
Örnek
Elimizde bir Comparator olsun.
public Comparator<String> getComparator() {
return new Comparator<String>() {
@Override
public int compare(String o1, String o2) {
...
}
};
}
Şöyle yaparızpublic 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 metoduCollections.sort() metodu girdi nesneyi değiştirir. Farklı bir kopya almak için şöyle yaparız.
List<string> sorted = Ordering.natural().sortedCopy(strings);
Hiç yorum yok:
Yorum Gönder