본문 바로가기
▶ Back-End/Java

Object List 정렬(Collectrions.sort())

by 오늘도 코딩 2021. 4. 16.
728x90
반응형

Collectrions.sort로 간단하게 해결

*정렬 시 사용 할 Comparator Override

*아래 더 간단한 로직 참고

 

 

▷ Example

- 나와 가장 가까운 분식집 순으로 정렬

 

public static void testSort() {

        // 테스트 데이터 생성
        List<DistVO> list = new ArrayList<DistVO>();
        DistVO vo;
        
        vo = new DistVO();
        vo.setName("짱구분식");
        vo.setDist(11);
        list.add(vo);
        
        vo = new DistVO();
        vo.setName("홍길동분식");
        vo.setDist(5);
        list.add(vo);
        
        vo = new DistVO();
        vo.setName("김길동분식");
        vo.setDist(5);
        list.add(vo);
        
        vo = new DistVO();
        vo.setName("십이분식");
        vo.setDist(34);
        list.add(vo);
        
        vo = new DistVO();
        vo.setName("저먼분식");
        vo.setDist(94);
        list.add(vo);
        
        // 정렬 전 출력
        System.out.println("정렬 전 ====================");
        for(DistVO data : list){
            System.out.println(data);
        }
        System.out.println("정렬 전 ====================");

        // 거리순으로 정렬(가까운 순 오름차순 ASC) 
        Comparator<DistVO> cp = new Comparator<DistVO>() {
            @Override
            public int compare(DistVO data1, DistVO data2){
                int a = data1.getDist();
                int b = data2.getDist();
                
                /*
                    [내림차순 DESC] a > b = -1                    
                    DistVO(dist=94, name=저먼분식)
                    DistVO(dist=34, name=십이분식)
                    DistVO(dist=11, name=짱구분식)
                    DistVO(dist=5, name=홍길동분식)
                    DistVO(dist=5, name=김길동분식)
    
                    [오름차순 ASC] a > b = 1
                    DistVO(dist=5, name=김길동분식)
                    DistVO(dist=5, name=홍길동분식)
                    DistVO(dist=11, name=짱구분식)
                    DistVO(dist=34, name=십이분식)
                    DistVO(dist=94, name=저먼분식)
                 */
                if(a > b) {
                    return 1;
                } else {
                    return -1;
                }
            }
        };
        // 정렬
        Collections.sort(list, cp);

        // 정렬 후 출력
        System.out.println("정렬 후 ====================");
        for(DistVO data : list){
            System.out.println(data);
        }
        System.out.println("정렬 후 ====================");
    }
    
    /**
    	결과 :
            정렬 전 ====================
            DistVO(dist=11, name=짱구분식)
            DistVO(dist=5, name=홍길동분식)
            DistVO(dist=5, name=김길동분식)
            DistVO(dist=34, name=십이분식)
            DistVO(dist=94, name=저먼분식)
            정렬 전 ====================
            정렬 후 ====================
            DistVO(dist=5, name=김길동분식)
            DistVO(dist=5, name=홍길동분식)
            DistVO(dist=11, name=짱구분식)
            DistVO(dist=34, name=십이분식)
            DistVO(dist=94, name=저먼분식)
            정렬 후 ====================
    */

 

 

▷ 관련 글

 

Object List 정렬(Comparator.comparing())

Comparator.comparing()로 간단하게 해결 ▷ Example public void testComparator(){ // 테스트 데이터 생성 List list = new ArrayList(); DistVO vo; vo = new DistVO(); vo.setName("짱구분식"); vo.setDist(11); list.add(vo); vo = new DistVO(); vo

coding-today.tistory.com

 

 

728x90
728x90

댓글