[Java] 특정 객체의 값을 오름|내림 차순 정렬 (Comparator )

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

댓글

Designed by JB FACTORY