본문 바로가기
Backend/JAVA

[JAVA] 이차원 문자열 배열 정렬

by 그적 2021. 2. 6.

람다식을 이용해 Arrays.sort 메소드를 오버라이딩하여 쉽게 정렬할 수 있다.

첫 번째 인덱스 값에 따라 정렬되고, 만약 첫 번째 인덱스 값이 동일한 경우에는 두 번째 있는 값을 비교하여 정렬시킨다.

아래와 같은 코드를 사용한다.

        Arrays.sort(배열, new Comparator<String[]>() {
			
            @Override
            public int compare(String[] o1, String[] o2) {
                if(o1[0].toString().contentEquals(o2[0].toString()))
                    return o1[1].toString().compareTo(o2[1].toString());
                else
                    return o1[0].toString().compareTo(o2[0].toString());
            }			
        });

 

 

다음과 같은 코드를 작성하였을 때 결과는 아래 사진과 같다.

    public static void main(String[] args) throws ParseException {
        // TODO Auto-generated method stub

        String[][] tickets = {{"ICN", "SFO"}, {"ICN", "ATL"}, {"SFO", "ATL"}, {"ATL", "ICN"}, {"ATL", "SFO"}};

        System.out.print("정렬 전 : ");
        for(int i=0; i<tickets.length; i++)
            System.out.print(Arrays.asList(tickets[i])+ " ");

        Arrays.sort(tickets, new Comparator<String[]>() {
			
            @Override
            public int compare(String[] o1, String[] o2) {
                if(o1[0].toString().contentEquals(o2[0].toString()))
                    return o1[1].toString().compareTo(o2[1].toString());
                else
                    return o1[0].toString().compareTo(o2[0].toString());
            }			
        });
		
        System.out.print("\n정렬 후 : ");
        for(int i=0; i<tickets.length; i++)
            System.out.print(Arrays.asList(tickets[i])+ " ");	
    }

 

댓글