[Java] 특정 객체의 값을 오름|내림 차순 정렬 (Comparator )
- 📕 Programing/Java
- 2021. 10. 14. 17:29
package org.kyhslam;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.Comparator;
import java.util.stream.Stream;
public class CompareTest {
public static class Car {
String name;
int price;
String keyword;
public Car(String name, int price, String keyword) {
this.name = name;
this.price = price;
this.keyword = keyword;
}
}
public static class CompareCar implements Comparator<Car> {
@Override
public int compare(Car o1, Car o2) {
int result = o1.price >= o2.price ? -1 : 1;
System.out.println("result = " + o1.price + "::" + o2.price + " = " + result);
return o1.price >= o2.price ? 1 : -1; // -1 : 오름차순 ||| 1 : 내림차순
}
}
public static void main(String[] args) {
ArrayList<Car> list = new ArrayList<Car>();
list.add(new Car("아반떼", 1500, "아"));
list.add(new Car("테슬라", 6000, "테"));
//list.add(new Car("그랜저", 3000, "그"));
Collections.sort(list, new CompareCar()); // 정렬
//for(int i=0; i < list.size(); i++) {
// Car c = list.get(i);
// System.out.println(c.name + " : " + c.price + " : " + c.keyword);
//}
// Stream으로 출력
Stream<Car> carList = list.stream();
carList.forEach(c -> System.out.println(c.name + " : " + c.price + " : " + c.keyword));
}
}
결과
아반떼 : 1500 : 아
테슬라 : 6000 : 테
반대로
public static class CompareCar implements Comparator<Car> {
@Override
public int compare(Car o1, Car o2) {
int result = o1.price >= o2.price ? -1 : 1;
System.out.println("result = " + o1.price + "::" + o2.price + " = " + result);
return o1.price >= o2.price ? -1 : 1; // -1 : 오름차순 ||| 1 : 내림차순
}
}
의 리턴값을 바꾸면
테슬라 : 6000 : 테
아반떼 : 1500 : 아
'📕 Programing > Java' 카테고리의 다른 글
[Java] HTTP 방식으로 POST 통신 (1) | 2021.11.02 |
---|---|
[Java] Steam의 filter 예제 (0) | 2021.10.14 |
[Java] 메서드 실행 시간 구하기(초) (0) | 2021.10.13 |
SAP RFC 연결 오류 (0) | 2021.09.02 |
[Java] SAP RFC 조회 (0) | 2021.08.31 |