Comparable
정렬 메서드
import java.util.*;
public class ex08_Comparable {
public static void main(String[] args) {
ArrayList<User> list = new ArrayList<>();
list.add(new User("김자바", "KimJava"));
list.add(new User("이자바", "LeeJava"));
list.add(new User("배자바", "BaeJava"));
list.add(new User("홍자바", "HongJava"));
list.add(new User("을자바", "EulJava"));
System.out.println("a".compareTo("b")); // -1. 교환이 이루어지지 않음
Collections.sort(list); // compareTo()를 이용하여 정렬한다
for (int i = 0; i < list.size(); i++) {
System.out.println(((User) list.get(i)).getEngName());
}
}
}
class User implements Comparable<User> {
String name;
String engName;
public User(String name, String engName) {
this.name = name;
this.engName = engName;
}
public String getName() {
return name;
}
public String getEngName() {
return engName;
}
@Override
public int compareTo(User user) {
return this.engName.compareTo(user.engName); // 사전순 정렬
}
}
package ch11_컬렉션_프레임워크2;
import java.util.*;
public class ex09_Comparator {
public static void main(String[] args) {
String[] strArr = { "cat", "Dog", "duck", "tiger" };
Arrays.sort(strArr); // String의 Comparable구현에 의한 정렬
System.out.println("strArr=" + Arrays.toString(strArr));
Arrays.sort(strArr, String.CASE_INSENSITIVE_ORDER); // 대소문자 구분안함
System.out.println("strArr=" + Arrays.toString(strArr));
Arrays.sort(strArr, new Descending()); // 역순 정렬
System.out.println("strArr=" + Arrays.toString(strArr));
}
}
class Descending implements Comparator<String> {
// o1: 먼저 나온값, o2: 나중에 나온값
public int compare(String o1, String o2) {
String c1 = o1;
String c2 = o2;
return c1.compareTo(c2) * -1; // -1을 곱해서 기본 정렬방식의 역으로 변경한다.
// 또는 c2.compareTo(c1)와 같이 순서를 바꿔도 된다.
}
}