List 목록을 객체별로 정렬

3279 단어 Java 기반list정렬
일부 업무 장면에서는list 목록에 있는 대상의 필드에 따라 정렬해야 합니다.오늘은 실례를 들어 설명한다.

실체류

public class Product {
    private int discount;
    //  getter/setter 
}

정렬 테스트 클래스

public class TestSortList {

    @Test
    public void test1(){
        List list = new ArrayList<>(3);
        Product p1 = new Product();
        p1.setDiscount(1);
        list.add(p1);

        Product p2 = new Product();
        p2.setDiscount(2);
        list.add(p2);

        Product p3 = new Product();
        p3.setDiscount(3);
        list.add(p3);

        Collections.sort(list, new Comparator() {
            @Override
            public int compare(Product o1, Product o2) {
                if(o1.getDiscount() > o2.getDiscount()){
                    return 1;
                } else if(o1.getDiscount() == o2.getDiscount()){
                    return 0;
                } else {
                    return -1;
                }
            }
        });

        for(Product product : list){
            System.out.println(product.getDiscount());
        }

    }
}

인쇄 결과:
1
2
3

이렇게 하면 승차순의 정렬을 완성할 수 있다.내림차순의 정렬 질서가 필요하면 o1.getDiscount() > o2.getDiscount () 는 앞뒤로 위치를 바꾸면 됩니다.

기타


jdk8에서 lambda 표현식의 쓰기가 도입되었기 때문에 정렬 부분 코드는 다음과 같이 간소화할 수 있습니다.
Collections.sort(list, (o1, o2) -> {
     if(o2.getDiscount() > o1.getDiscount()){
         return 1;
     } else if(o1.getDiscount() == o2.getDiscount()){
         return 0;
     } else {
         return -1;
     }
 });

또한 인터넷에서 통용되는 리스트 정렬 도구 방법을 제공하여 스스로 참고하여 학습할 수 있다.

좋은 웹페이지 즐겨찾기