Java-da standart Comparator sinfini yozish

Men Java-da umumiy yig'ma sinfni qo'llayapman. Bu sinf uchun ikkita konstruktor mavjud, biri parametrsiz standart konstruktordir. Ikkinchisi taqqoslash ob'ektini oladi, bunda foydalanuvchi to'p elementlari qanday taqqoslanayotganini boshqarishi mumkin. Endi agar foydalanuvchi standart konstruktordan foydalansa, men sinfimni standart taqqoslash ob'ektiga ishlatishni xohlayman. Ushbu ob'ektning solishtirish usuli shunchaki compareTo() usulini chaqiradi (qiyoslash interfeysining bir qismi). Buni qilishning bir yo'li bormi va agar shunday bo'lsa, qanday qilib?


person user1210233    schedule 20.10.2012    source manba


Javoblar (4)


O'ylaymanki, umumiy taqqoslash quyidagicha ko'rinadi:

public class ComparableComparator<T extends Comparable<T>> implements Comparator<T> {
  @Override
  public int compare(T lhs, T rhs) {
    return lhs.compareTo(rhs);
  }  
}
person Vincent Mimoun-Prat    schedule 20.10.2012
comment
Bu solishtirish mumkin emas‹T›? - person DaveFar; 21.10.2012

Apache Commons'dan ComparableComparator dan foydalaning bu ixtiyoriy ikkita Objects oladi va agar ular Comparable ni amalga oshirsa, ularni solishtiradi.

Shu bilan bir qatorda, taqqoslagichni olmaydigan konstruktor K extends Comparable<K> tipidagi parametrni qo'llashi kerak.

person Tomasz Nurkiewicz    schedule 20.10.2012

Java 8 da standart taqqoslash sifatida foydalanishingiz mumkin bo'lgan Comparator.naturalOrder() mavjud. Qarang: java.util.Comparator API< Tafsilotlar uchun /a>.

person Vivit    schedule 30.11.2016

Guava "tabiiy tartib" ni Comparator ta'minlaydi -- bashorat qilish mumkin -- Ordering.natural().

person Louis Wasserman    schedule 20.10.2012