Кораптор - это интерфейс, который может переопределить два метода сравнения () и равных () для функции сравнения цен; Если он нулевой, он использует порядок по умолчанию элементов, таких как A, B, C, D, E, F, G, то есть A, B, C, D, E, F, G, конечно, то же самое относится и к числам.
Сравните (a, b) Метод: вернуть отрицательное целое число, ноль или положительное целое число в соответствии с первым параметром, который меньше, чем, равен или больше, чем второй параметр.
Метод Equals (OBJ): вернуть true только в том случае, если указанный объект также является компаратором, и тот же вид, что и этот компаратор, вынужден быть реализованным.
Второй параметр collections.sort (list, new Pricecomparator ()); Возвращает значение Int-Type, которое эквивалентно флага, сообщая метод сортировки, в каком порядке сортируйте список.
Конкретный метод кода реализации выглядит следующим образом:
Класс Книга Entity:
пакет com.tjcyjd.comparator; импортировать java.text.decimalformat; импортировать java.text.simpledateformat; импортировать java.util.gregoriancalendar; импортировать java.util.iterator; импортировать java.util.treemap; / ** * КЛАСС КНИЖИТЕЛЬНОЙ ЭНДИТА * * @author yjd * * */ Общедоступный класс Книга Опромигает сопоставимо {// Определить класс с именем книги, которая унаследована по умолчанию от Общественного INT INT IT -идентификатор объектного класса; // chumber; // Назовите публичную двойную цену; // цена частная строка автор; // Автор публичный календарь григорианкалендар; // Дата публикации public book () {this (0, "x", 0.0, new gregoriancalendar (), ""); } public Book (INT ID, название строки, двойная цена, календарь GregorianCalendar, String Author) {this.id = id; this.name = name; this.price = цена; this.calendar = календарь; this.author = автор; } // Перепишите метод, унаследованный от объекта родительского класса, чтобы соответствовать требованиям информации о классе книги Описание Public String toString () {String Showtr = ID + "/T" + name; // Определите строку, которая отображает информацию о классе DecimalFormat formatprice = new DecimalFormat ("0,00"); // Цена формата до двух десятичных мест Showtr + = "/t" + formatprice.format (цена); // Формат цена Showtr + = "/t" + автор; SimpleDateFormat formatdate = new SimpleDateFormat ("Yyyy Year MM Month DD Day"); showtr + = "/t" + formatdate.format (calendar.gettime ()); // формат времени возврата Showtr; // return information string string} public int compareto (Object obj) {// метод в сопоставимой интерфейсной книге b = (книга) obj; вернуть это.id - b.id; // Сравните размер в соответствии с идентификатором книги, используемой для сортировки по умолчанию} public static void main (string [] args) {книга B1 = новая книга (10000, «Мечта о красной камере», 150,86, Нью -Грегорянкалендар (2009, 01, 25), «Cao Xueqin, Gao E»); Книга B2 = новая книга (10001, «Романтика трех королевств», 99,68, Нью -Грегорианкалендарь (2008, 7, 8), «Луо Гуанчхон»); Книга B3 = новая книга (10002, «водяная маржа», 100,8, Нью -Грегорианкалендар (2009, 6, 28), «Ши Найан»); Книга B4 = новая книга (10003, «Путешествие на Запад», 120,8, Нью -Грегорианкалендар (2011, 6, 8), «У Ченг»); Книга B5 = новая книга (10004, «Легенда о героях Кондора», 10.4, New Gregoriancalendar (2011, 9, 23), «Sohu»); TreeMap tm = new TreeMap (); tm.put (b1, новое целое число (255)); tm.put (b2, новое целое число (122)); tm.put (b3, новое целое число (688)); tm.put (b4, новое целое число (453)); tm.put (b5, новое целое число (40)); Итератор IT = tm.keyset (). Iterator (); Object Key = null, значение = null; Книга BB = NULL; while (it.hasnext ()) {key = it.next (); bb = (книга) ключ; значение = tm.get (key); System.out.println (bb.tostring () + "/t инвентарь:" + tm.get (key)); }}} Пользовательский компаратор и тестовые классы:
пакет com.tjcyjd.comparator; импортировать java.util.arraylist; импортировать java.util.collections; Импорт java.util.comparator; импортировать java.util.gregoriancalendar; импортировать java.util.iterator; импортировать java.util.list; открытый класс usecomparator {public static void main (string args []) {list <book> list = new ArrayList <book> (); // Книга последовательности массива B1 = Новая книга (10000, «Мечта о красных особняках», 150,86, Нью -Грегорианкалендар (2009, 01, 25), «Cao Xueqin, Gao E»); Книга B2 = новая книга (10001, «Романтика трех королевств», 99,68, Нью -Грегорианкалендарь (2008, 7, 8), «Луо Гуанчхон»); Книга B3 = новая книга (10002, «водяная маржа», 100,8, Нью -Грегорианкалендар (2009, 6, 28), «Ши Найан»); Книга B4 = новая книга (10003, «Путешествие на Запад», 120,8, Нью -Грегорианкалендар (2011, 6, 8), «У Ченген»); Книга B5 = новая книга (10004, "Tianlong Baba", 10.4, New Gregoriancalendar (2011, 9, 23), "Sohu"); list.add (b1); list.add (b2); list.add (b3); list.add (b4); list.add (b5); // collections.sort (список); // нет компаратора по умолчанию, System.out.println («Элементы в последовательности массива:»); myprint (список); Collections.sort (список, новый PriCecomParator ()); // Сортировать по цене System.out.println («Сортируется по цене книги:»); myprint (список); Collections.sort (список, новый календарномпаратор ()); // Сортировать по времени System.out.println ("Сортируется Book Public Static void myprint (list <book> list) {iterator it = list.iterator (); // Получить итератор для пересечения всех элементов в списке, в то время как (it.hasnext ()) {// Если есть элемент в итератор, он возвращает True System.out. it.next ()); // Покажите этот элемент}} // Пользовательский компаратор: сортируйте по цене книги Статический класс Pricecomparator реализует компаратор {public int compare (Object Object1, Object2) {// Реализовать метод в интерфейсной книге P1 = (книга) объект1; Double (P2.Price); В интерфейсной книге P1 = (книга) объект1; // кастинг книга P2 = (книга) объект2; return p2.calendar.compareto (p1.calendar); }}}Выше всего содержание этой статьи. Я надеюсь, что это будет полезно для каждого обучения, и я надеюсь, что все будут поддерживать Wulin.com больше.