java List 실체 정렬

자바 실체 집합 정렬 에 대해 세 가지 방법 을 정 리 했 습 니 다.첫 번 째 는 원생 이 지원 하 는 Comparator 를 통 해 정렬 하 는 것 입 니 다.두 번 째 는 자바 8 의 Lambda 표현 식 을 통 해 정렬 하 는 것 입 니 다.세 번 째 는 apache-comon 의 공구 꾸러미 를 사용 하여 정렬 하 는 것 입 니 다.테스트 를 통 해 원 하 는 효 과 를 얻 을 수 있 습 니 다.세 번 째 코드 는 가 독성,용이 성 이 강하 기 때문에 세 번 째 코드 를 추천 합 니 다.
세 번 째 순 서 는 아파 치-common 의 beanutils,collections 패 키 지 를 도입 해 야 합 니 다.maven 은 다음 과 같 습 니 다.
<dependency>
    <groupId>commons-collectionsgroupId>
    <artifactId>commons-collectionsartifactId>
    <version>3.2.2version>
dependency>
<dependency>
    <groupId>commons-beanutilsgroupId>
    <artifactId>commons-beanutilsartifactId>
    <version>1.9.3version>
dependency>

코드
public class TestCollections {
    private ListString, Object>> getDataList() {
        Map<String, Object> map1 = new HashMap<>(3);
        map1.put("id", 2);
        map1.put("name", "  ");

        Map<String, Object> map2 = new HashMap<>(3);
        map2.put("id", 1);
        map2.put("name", "  ");

        Map<String, Object> map3 = new HashMap<>(3);
        map3.put("id", 3);
        map3.put("name", "  ");

        ListString, Object>> dataList = new ArrayList<>();
        dataList.add(map1);
        dataList.add(map2);
        dataList.add(map3);
        return dataList;
    }

    @Test
    public void sort() {
        ListString, Object>> dataList = getDataList();
        System.out.println("   :" + dataList);

        //     Collections       
        Collections.sort(dataList, new Comparator() {
            @Override
            public int compare(Map o1, Map o2) {
                int id1 = Integer.parseInt(o1.get("id").toString());
                int id2 = Integer.parseInt(o2.get("id").toString());
                //  id      
                return id2 - id1;
            }
        });
        System.out.println("Collections     :" + dataList);

        //     java8 Lambda          
        dataList = getDataList();
        dataList.sort((Map o1, Map o2) -> {
            int id1 = Integer.parseInt(o1.get("id").toString());
            int id2 = Integer.parseInt(o2.get("id").toString());
            return id1 - id2;
        });
        System.out.println("Lambda     :" + dataList);

        //               
        dataList = getDataList();
        Comparator mycmp1 = ComparableComparator.getInstance();
        //  
        mycmp1 = ComparatorUtils.reversedComparator(mycmp1);
        ArrayList<Object> sortFields = new ArrayList<>();
        //   (    )
        sortFields.add(new BeanComparator("id", mycmp1));
        //        
        ComparatorChain multiSort = new ComparatorChain(sortFields);
        //        ,    ,     
        Collections.sort(dataList, multiSort);
        System.out.println("        :" + dataList);
    }
}

실행 결과
   :[{name=  , id=2}, {name=  , id=1}, {name=  , id=3}]
Collections     :[{name=  , id=3}, {name=  , id=2}, {name=  , id=1}]
Lambda     :[{name=  , id=1}, {name=  , id=2}, {name=  , id=3}]
        :[{name=  , id=3}, {name=  , id=2}, {name=  , id=1}]

13 시간 전 발표

좋은 웹페이지 즐겨찾기