Когда коллекция или массив, который необходимо сортировать, не является простым числовым типом, вы обычно можете использовать компаратор или сопоставимый для реализации сортировки объекта или пользовательской сортировки простым способом.
Функция сравнения, которая налагает общий порядок на некоторый сбор объектов. Коваторы могут быть переданы такому методу сортировки (например, Collections.sort или Arrays.sort), чтобы обеспечить точный контроль над порядком сортировки. Координаторы также могут использоваться для управления порядком определенных структур данных (таких как отсортированные наборы или отсортированные карты), или для предоставления упорядочения коллекций объектов, которые не имеют естественного упорядочения. ------ API
Вы можете отсортировать список строк напрямую, потому что объект String помог нам реализовать сопоставимый интерфейс, поэтому, если наш человек хочет сортировать, нам также необходимо реализовать компаратор.
1. Кораптор
Сортировать объекты, хранящиеся в LinkedList
Импорт java.util.comparator; импортировать java.util.linkedlist; класс Person {Private Float Height; Приватное название строки; Человек (высота плавания) {this.height = высота; } public float getheight () {return Height; } public void setheight (float height) {this.height = height; } public String getName () {return name; } public void setName (string name) {this.name = name; }} класс PersonHeight реализует компаратор <person> {@Override // Переписать метод сравнения, возврат <0 остается без изменений, возврат> 0 обменивается в последовательности (подниматься по приказу } else {return -1; }}} public class obter3 {public static void main (string [] args) {person p1 = новое лицо (23.4f); p1.setname ("stud1"); Человек P2 = новый человек (2.34F); p2.setname ("stud2"); Человек p3 = новый человек (34,32f); p3.setname ("stud3"); Человек P4 = новый человек (56,45F); p4.setname ("stud4"); Человек P5 = новый человек (21,4F); p5.setname ("stud5"); LinkedList <derson> al = new LinkedList <derss> (); al.add (p1); al.add (p2); al.add (p3); al.add (P4); al.add (p5); // Вызов метод сортировки для реализации Sorting Collections.sort (al, New Personheight ()); // Транзибиция на вывод для (Person P: al) System.out.println (p.getName ()); }}
Прикрепил:
// Сортировать дату/*** Если O1 меньше O2, верните отрицательное число; Если O1 больше O2, верните положительное число; Если они равны, верните 0; */@Overridepublic int compare (step o1, step o2) {date accepttime1 = utiltool.strtodate (o1.getaccepttime (), null); Date accepttime2 = utiltool.strtodate (o2.getAccepttime (), null); // поднимаясь по полю даты, если вы хотите спуститься, вы можете использовать метод до (AcceptTime1.fter (AcceptTime2)) return 1; возврат -1;}2. Сопоставимо
Import java.util.collections; импорт java.util.comparator; import java.util.linkedlist; класс лиц реализует сопоставимые {частная высота плавания; Приватное название строки; Человек (высота плавания) {this.height = высота; } public float getheight () {return Height; } public void setheight (float height) {this.height = height; } public String getName () {return name; } public void setName (string name) {this.name = name; } @Override public int compareto (Object o) {// todo Автогенерированный метод заглушка if if (this.height> ((человек) o). Хейт) {return 1; } else return -1; / p1.setname ("stud1"); Человек P2 = новый человек (2.34F); p2.setname ("stud2"); Человек p3 = новый человек (34,32f); p3.setname ("stud3"); Человек P4 = новый человек (56,45F); p4.setname ("stud4"); Человек P5 = новый человек (21,4F); p5.setname ("stud5"); LinkedList <derson> al = new LinkedList <derss> (); al.add (p1); al.add (p2); al.add (p3); al.add (P4); al.add (p5); Collections.Sort (AL); для (человек P: al) System.out.println (p.getName ()); }}Три. Сравнение
Сопоставимо определено внутри класса человека .
Кораптор определяется вне человека. В настоящее время структура нашего класса личности не должна меняться.
Эти два метода имеют свои преимущества и недостатки. Это просто использовать сопоставимо. Пока объект, который реализует сопоставимый интерфейс, становится сопоставимым объектом, он требует изменения исходного кода. Преимущество использования компаратора заключается в том, что он не требует изменения исходного кода, а реализации компаратора. Когда необходимо сравнивать пользовательский объект, вы можете сравнить размер, передавая компаратор и объект вместе. В компараторе пользователи могут самостоятельно реализовать сложную и общую логику, чтобы они могли соответствовать некоторым относительно простым объектам, которые могут сэкономить много повторяющихся рабочей силы.