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?
Java-da standart Comparator sinfini yozish
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
Bu solishtirish mumkin emas‹T›?
- person DaveFar; 21.10.2012
Apache Commons'dan ComparableComparator
dan foydalaning bu ixtiyoriy ikkita Object
s 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