반응형
http://promc.tistory.com/entry/List-Map-Set-%EC%9D%98-%EC%A0%95%EB%A0%AC%EA%B8%B0%EB%8A%A5-%ED%8E%8C
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 | import java.util.*; public class A { public static void main(String args[]) { // 다섯명의 고객에 대한 배열 생성 Customer[] arr = new Customer[] { new Customer("헤더 로클리어",1961, "Heather Deen Locklear"), new Customer("데미 무어", 1962, "Demetria Gene Guynes"), new Customer("안젤라 바셋", 1958, "Angela Bassett"), new Customer("신디 크로퍼드", 1966, "Cintia Ann Crawford"), new Customer("캐서린 제타 존스", 1969, "Catherine Jones") }; printArray(arr, "Before Array sort Using Default sort"); // 배열을 정렬 (클래스에 정의된 기본정렬) Arrays.sort(arr); printArray(arr, "\nAfter Array sort Using Default sort"); // 배열을 어린 나이부터 정렬 Arrays.sort(arr, new YoungOrderComparator()); printArray(arr, "\nAfter Array sort Using YoungOrderComparator"); List list = Arrays.asList(arr); // 배열을 리스트로 Collections.shuffle(list); // 리스트의 순서를 마구 섞어 주세요. printList(list, "\nBefore List sort Using Default sort"); // 리스트를 정렬 (클래스에 정의된 기본정렬) Collections.sort(list); printList(list, "\nAfter List sort Using Default sort"); // 리스트를 영문이름으로 정렬 Collections.sort(list, new EngNameComparator()); printList(list, "\nAfter List sort Using EngNameComparator"); // 디폴트 정렬할 수 있는 TreeSet을 만든다 Set set = new TreeSet(list); System.out.println("\nAfter Making Set Using Default sort\n" + set); // 어린 나이부터 정렬할 수 있는 TreeSet을 만든다 Set set2 = new TreeSet(new YoungOrderComparator()); set2.addAll(list); System.out.println("\nAfter Making Set Using YoungOrderComparator\n" + set2); } static void printArray(Customer[] a , String title) { System.out.println(title); for (int i=0; i<a.length; i++) System.out.println(a[i]); } static void printList(List l, String title) { System.out.println(title); for (int i=0; i<l.size(); i++) System.out.println(l.get(i)); } } // 디폴트 소팅을 위해서 Comparable 인터페이스를 구현한다. class Customer implements Comparable { String name; int birthYear; String engName; // Constructor public Customer(String name, int birthYear, String engName) { this.name = name; this.birthYear = birthYear; this.engName = engName; } // Object의 toString 메소드 overriding.. 객체의 문자적 표현 public String toString() { return name + "(" + engName + ") " + birthYear + "년생"; } // Comparable 인터페이스를 구현한 클래스에서 반드시 overriding 해야만 하는 비교 메쏘드 public int compareTo(Object o) { // String의 compareTo 메소드를 호출(사전순서적( lexicographically)으로 비교) return name.compareTo(((Customer)o).name); } } // 젊은 순서대로 정렬하기 위해 Comparator 인터페이스를 구현 class YoungOrderComparator implements Comparator { public int compare(Object o1, Object o2) { int by1 = ((Customer)o1).birthYear; int by2 = ((Customer)o2).birthYear; return by1 > by2 ? -1 : (by1 == by2 ? 0 : 1); // descending 정렬..... } } // 영문이름으로 정렬하기 위해 Comparator 인터페이스를 구현 class EngNameComparator implements Comparator { public int compare(Object o1, Object o2) { String en1 = ((Customer)o1).engName; String en2 = ((Customer)o2).engName; return en1.compareTo(en2); // ascending 정렬 } } | cs |
반응형
'알고리즘' 카테고리의 다른 글
[JAVA] 소수 구하기 최적의 알고리즘 (1) (0) | 2016.11.01 |
---|---|
[java] 순열 (0) | 2016.10.21 |
[java] 이진탐색 (0) | 2016.10.11 |
[java] system.in 버퍼리더 표준 입출력 (0) | 2016.10.11 |
알고리즘 하나씩.. 정리 (0) | 2016.10.07 |
댓글