여기서 우리는지도 값별로 정렬을 포함하여 목록, 세트 및 맵의 정렬에 대해 논의합니다.
1) 목록 정렬
목록 정렬은 정렬 컬렉션 방법 또는 배열 정렬 방법을 직접 사용할 수 있습니다. 최종 분석에서 컬렉션은 정렬 어레이를 호출하는 것입니다.
public static <t> void sort (list <t> 목록, 비교기 <? 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. 세트 (A [J]); }}사용자 정의 객체 인 경우 객체 자체가 "비교"의 기능을 갖도록 비슷한 인터페이스를 구현해야합니다. 물론, 우리는 외부에서 비교기를 사용하여 정렬을 지정할 수도 있습니다.
예를 들어:
패키지 com.fox; /** * @author huangfox * @desc */public class user emplications <user> {private String name; 사적인 int 연령; public user () {} public user (문자열 이름, int age) {super (); this.name = 이름; this.age = age; } @override public String toString () {return "name :" + name + ", age :" + age; } public String getName () {return name; } public void setName (문자열 이름) {this.name = 이름; } public int getage () {반환 연령; } public void 설정 (int Age) {this.age = age; } @override public int compareto (user o) {if (o.age <this.age) 반환 1; else if (o.age> this.age) 반환 -1; 그렇지 않으면 0; } / ** * @param args * / public static void main (String [] args) {user u1 = 새 사용자 ( "Fox", 11); 사용자 U2 = 새 사용자 ( "Fox2", 21); System.out.println (u2.compareto (u1)); }}정렬 :
// list <user> us = new ArrayList <user> (); List <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, new comporator <user> () {@override public int compart (user o1, user o2) {if (o1.getage ()) <o2.getage ()) return -1; else (o1.getage ()> o2gegage () return 1; else return o1. (). long et = system.nanoTime (); System.out.println (et -bt); System.out.println (us.toString ());물론 여기에서 직접 수집하고 정렬 할 수 있습니다 (미국). 비교기는 사용자의 자체 비교 방법 비교를 최적화하는 데 사용됩니다 (사용자 이름과 정렬 문자열에 따라 같은 연령의 사람을 정렬).
간단히 말해서, 배열 분류는 삽입 분류 및 병합 분류를 사용하고 배열 길이가 작을 때 직접 삽입 분류를 사용합니다.
2) 정렬을 설정하십시오
세트에는 해시 세트 및 트리셋이 포함됩니다. Hashset은 Hashmap을 기반으로하며 TreeSet은 Treemap을 기반으로합니다.
Treemap은 빨간색과 검은 색 나무를 사용하여 구현되며 자연스럽게 분류 기능이 있습니다. "자연스럽게 분류 함수가 있습니다"는 반복자가 오름차순 및 내림차순 순서를 가지고 있음을 의미합니다.
그렇다면 해시 세트를 어떻게 정렬합니까? 해시셋을 목록으로 변환하여 목록으로 정렬 할 수 있습니다.
예를 들어:
set <user> us = new Hashset <user> (); // set <user> us = new treeset <user> (); // set <user> us = new treeset <user> (new Comparator <user> () {// // @override // public int compart (user o1, user o2) {// if (o1.getage () <o2.getage ()) // return -// if (o1.getage ()> o2.getage ()) // else 1; // else 1; // else 1; o1.getName (). 비교 (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)); // 세트 -> 배열 목록 <user> list = new ArrayList <user> (US); System.out.println (목록); collections.sort (목록); System.out.println (목록);해시셋을 배열로 변환하여 배열로 정렬 할 수도 있습니다.
3) 맵 정렬
지도에는 해시 맵과 트리 맵이 포함됩니다. 위에서 언급했듯이 Treemap은 빨간색과 검은 나무로 구현되며 자연스럽게 분류 기능이 있습니다.
그렇다면 "키"로 해시 맵을 어떻게 정렬합니까? 이 방법은 매우 간단합니다. 해시 맵을 사용하여 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));
"value"로 정렬하는 방법?
// 값별로 정렬 <enty <string, integer >> ks = us.entryset (); List <Entry <String, Integer >> list = new ArrayList <Map.Entry <String, Integer >> (KS); collections.sort (list, new comparator <entry <string, integer >> () {@override public int compart (Entry <string, integer> o1, Entry <string, integer> o2) {if (o1.getValue () <o2.getValue ()) return -1; if (o1.getValue ()))))))); System.out.println (목록);맵의 세트 구조로의 입력을 제안한 다음 세트를 목록으로 변환 한 다음 마지막으로 목록에 따라 정렬하십시오.
Java Collection의 분류 문제에 대한 위의 간단한 논의는 내가 공유하는 모든 콘텐츠입니다. 나는 당신이 당신에게 참조를 줄 수 있기를 바랍니다. 그리고 당신이 wulin.com을 더 지원할 수 있기를 바랍니다.