14 Mayıs 2023 Pazar

Comparator.comparingInt metodu

Giriş
Static factory metodudur. İki tane int değeri karşılaştıran Comparator nesnesi döner. min (), max (), sort (), gibi işlemlerde kullanılabilir.
Eskiden şöyle yazardık.
List<String> al = Arrays.asList("45", "186", "185", "55", "51", "51", //
        "22", "78", "64", "26", "49", "21");
Collections.sort(al, new Comparator<String>() {
    @Override
    public int compare(String o1, String o2) {
        return Integer.compare(Integer.parseInt(o1), Integer.parseInt(o2));
    }
});
Örnek - Max
Şimdi şöyle yazıyoruz.
someStrings.stream().max(Comparator.comparingInt(String::length)).get()
Örnek - Sort
Şimdi şöyle yazıyoruz.
Collection.sort(al, Comparator.comparingInt(Integer::parseInt));
İki alan göre çalışan comparator şöyledir.
Collection.sort(personList, Comparator
    .comparingInt(Person::getAge)
    .thenComparing(Person::getSurname));
Örnek
Listede olmayan nesneleri en başa alan bir sort için şö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

Hiç yorum yok:

Yorum Gönder