Здесь мы обсудим сортировку списка, набора и карты, включая сортировку по значению карты.
1) Список сортировки
Сортировка списка может непосредственно использовать метод сортировки коллекций или метод вида массивов. В последнем анализе коллекции должны вызвать метод массивов.
public static <t> void sort (list <t> list, компаратор <? Super t> c) {object [] a = list.toarray (); Arrays.sort (a, (компаратор) C); ListIterator I = list.ListIterator (); for (int j = 0; j <a.length; j ++) {i.next (); i.set (a [j]); }}Если это пользовательский объект, вам необходимо реализовать сопоставимый интерфейс, чтобы сам объект имел функцию «сравнения». Конечно, мы также можем использовать компаратор снаружи, чтобы указать его сортировку.
Например:
пакет com.fox; /** * @author huangfox * @desc */public Class Пользователь, сопоставимый <user> {name private String; частный int возраст; public user () {} public user (string name, int age) {super (); this.name = name; this.age = возраст; } @Override public String toString () {return "name:" + name + ", age:" + age; } public String getName () {return name; } public void setName (string name) {this.name = name; } public int getage () {return Age; } public void setage (int age) {this.age = age; } @Override public int compareto (user o) {if (o.age <this.age) return 1; иначе if (o.age> this.age) return -1; иначе вернуть 0; } / ** * @param args * / public static void main (string [] args) {user u1 = новый пользователь ("fox", 11); Пользователь U2 = новый пользователь ("fox2", 21); System.out.println (U2.comPareto (U1)); }}Сортировать по:
// список <user> us = new ArrayList <user> (); Список <user> us = new LinkedList <user> (); us.add (новый пользователь ("f5", 12)); us.add (новый пользователь ("F2", 22)); us.add (новый пользователь ("f3", 2)); us.add (новый пользователь ("F4", 14)); us.add (новый пользователь ("F5", 32)); us.add (новый пользователь ("F4", 12)); us.add (новый пользователь ("F7", 17)); us.add (новый пользователь ("F8", 52)); System.out.println (us.toString ()); long bt = system.nanotime (); Collections.sort (us, новый компаратор <user> () {@override public int compare (user o1, user o2) {if (o1.getage () <o2.getage ()) return -1; else if (o1.getage ()> o2.getgage ()) return 1; else return o1.getName (). Compareto (o2.getname ();); long et = system.nanotime (); System.out.println (et - bt); System.out.println (us.toString ());Конечно, здесь вы можете напрямую собирать и сортировать (США). Кораптор используется для оптимизации собственного метода сравнения пользователя (сортировка людей того же возраста в соответствии с именем пользователя и строки сортировки).
Просто упомянуть, что массивы сортировка использует сортировку и сортировку слияния вставки и сортировку вставки непосредственно, когда длина массива мала.
2) Установить сортировку
Набор включает в себя хэшсет и деревья. Hashset основан на HashMap, а Treesset основан на TreeMap.
TreeMap реализуется с использованием красных и черных деревьев и, естественно, имеет функцию сортировки. «Естественно, обладает функцией сортировки», означает, что у него есть итераторы в восходящем и убывающем порядке.
Итак, как вы сортируете хэшсет? Мы можем преобразовать хэшсет в список и сортировать его с списком.
Например:
SET <SOMENT> US = новый HASHSET <SOMENT> (); // SET <SOMENT> US = NEW TREESET <SOMPER> (); // set <user> us = new Treeset <user> (новый компаратор <user> () {// // @Override // public int compare (user o1, user o2) {// if (o1.getage () <o2.getage ()) // return -1; // else if (o1.getge ()> o2.getage ()) // return 1; // ense/ erto/ return/ return/ return/ // return/ return/ // return/ return/ // return/ retur; o1.getName (). CompareTo (o2.getName ()); //} //}); us.add (новый пользователь ("f5", 12)); us.add (новый пользователь ("F2", 22)); us.add (новый пользователь ("f3", 2)); us.add (новый пользователь ("F4", 14)); us.add (новый пользователь ("F5", 32)); us.add (новый пользователь ("F4", 12)); us.add (новый пользователь ("F7", 17)); us.add (новый пользователь ("F8", 52)); // set -> array list <user> list = new ArrayList <user> (us); System.out.println (список); Collections.sort (список); System.out.println (список);Вы также можете преобразовать хешст в массив и сортировать его с помощью массивов.
3) Карта сортировки
Карта включает в себя HashMap и TreeMap. Как упоминалось выше, TreeMap реализован с красными и черными деревьями и, естественно, имеет функции сортировки.
Итак, как вы сортируете Hashmap по "Key"? Метод очень прост, используйте HashMap для построения TreeMap.
Map <string, integer> us = new Hashmap <String, Integer> (); // map <string, integer> us = new TreeMap <String, Integer> (); us.put ("f1", 12); us.put ("f2", 13); us.put ("f5", 22); us.put ("f4", 42); us.put ("f3", 15); us.put ("f8", 21); us.put ("f6", 123); us.put ("f7", 1); us.put ("f9", 19); System.out.println (us.toString ()); System.out.println (New TreeMap <String, Integer> (US));Как сортировать по "ценности"?
// Сортировать по значению набор <intpirt <String, Integer >> ks = us.EntrySet (); List <intpirt <string, integer >> list = new ArrayList <map.Entry <String, Integer >> (KS); Collections.sort (List, новый компаратор <entry <string, integer >> () {@Override public int compare (intry <string, integer> o1, intry <string, integer> o2) {if (o1.getValue () <o2.getValue ()) return -1; else if (o1.getvalue () o2.gletval ()) return 1; System.out.println (список);Предложите вход карты в установленную структуру, затем преобразуйте установку в список и, наконец, сортируйте ее в соответствии со списком.
Приведенное выше краткое обсуждение проблемы сортировки в коллекции Java - это весь контент, которым я делюсь с вами. Я надеюсь, что вы можете дать вам ссылку, и я надеюсь, что вы сможете поддержать Wulin.com больше.