AWS CLOUD FRAMEWORK/Java
[Day15] Ex02
JWJ_Hub
2023. 4. 6. 19:48
package sort;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Comparator;
class Coffee implements Comparable<Coffee> {
String name;
int price;
public Coffee(String name, int price) {
this.name = name;
this.price = price;
}
@Override
public String toString() {
return String.format("%s : %,d", name, price);
}
@Override
public int compareTo(Coffee o) {
return this.price - o.price;
}
}
public class Ex02 {
public static void main(String[] args) {
Coffee ob1 = new Coffee("아메리카노", 2000);
Coffee ob2 = new Coffee("디카페인 아메리카노", 2300);
Coffee ob3 = new Coffee("헤이즐넛 아메리카노", 2500);
Coffee ob4 = new Coffee("콜드브루 라떼", 4000);
Coffee ob5 = new Coffee("콜드브루 돌체라떼", 4500);
Coffee[] arr = { ob4, ob1, ob3, ob5, ob2 };
ArrayList<Coffee> list = new ArrayList<Coffee>(Arrays.asList(arr));
list.forEach(c -> System.out.println(c));
System.out.println();
list.sort(null); // Comparator는 전달하지 않았음
list.forEach(c -> System.out.println(c));
System.out.println();
// Comparable에서 지정한 방식이 아닌, 다른 형태로 정렬을 수행하려면 Comparator를 사용한다
Comparator<Coffee> comp = new Comparator<Coffee>() {
@Override
public int compare(Coffee o1, Coffee o2) {
return o1.name.compareTo(o2.name);
}
};
list.sort(comp); // comp는 이름 기준 오름차순 정렬의 규칙이다
list.forEach(c -> System.out.println(c));
System.out.println();
Comparator<Coffee> comp2 = (o1, o2) -> o2.name.compareTo(o1.name);
list.sort(comp2); // comp2는 이름 기준 내림차순 정렬의 규칙이다
list.forEach(c -> System.out.println(c));
System.out.println();
// 가격기준 내림차순 정렬
list.sort((o1, o2) -> o2.price - o1.price);
list.forEach(c -> System.out.println(c));
System.out.println();
}
}