2017-02-20 2 views
0

2D 배열이 있고 두 개의 열이 있으며이를 정렬하고 싶습니다.두 개의 열을 기반으로하는 2D 배열 정렬


입력이됩니다

제 ..... 열 번째 열에

3 ..................... .2

4 ...................... 9

3 ............... ....... 1

5 ..................... 0

1 ...................... 2


출력은이다

첫번째 열 ..... 제 2 열

5 ..................... 0

4 ............... ....... 9

3 ..................... 2

3 ..................... 1

1 .................. .... 2


나는 자바로 시작한다.

날 (mySort (INT [] [] 편곡) 배열을 정렬하는 기능의 코드를 오순절 도와주세요

+0

내가 위해 다음 두 번째 첫째,에 의해 주문을 할 첫째로 당신이 아직하지 않은 경우 –

+3

다음 *주십시오 * 읽을 시간이 좀 걸릴 [도움말. 페이지] (http://stackoverflow.com/h elp), 특히 [여기에 관해서 내가 물어볼 수있는 주제는 무엇입니까?] (http://stackoverflow.com/help/on-topic) 및 [ "묻지 않도록해야 할 질문에는 어떤 것들이 있습니까?"] (http : //stackoverflow.com/help/on-topic) : //stackoverflow.com/help/dont-ask). 또한 [둘러보기] (http://stackoverflow.com/tour)와 [좋은 질문을하는 방법에 대해 읽어보십시오.] (http://stackoverflow.com/help/how-to-ask). 마지막으로 [Minimal, Complete, Verifiable Example] (http://stackoverflow.com/help/mcve)을 만드는 방법을 배우십시오. –

답변

1

당신은 사용자 정의 비교기로 정렬 할 수 있습니다 :.

Arrays.sort(datas, new Comparator<Integer[]>() { 
     @Override 
     public int compare(Integer[] entry1, Integer[] entry2) { 
       if(entry1[0] == entry2[0]){ 
         return entry2[1] - entry1[1]; 
       } 
       return entry2[0] - entry1[0]; 
     } 
}); 
0

자바 8을 사용 , 당신은 또한 이런 식으로 작업을 수행 할 수 있습니다

Comparator<Integer[]> comparator = Comparator.comparing(x -> x[0]) 
    .thenComparing(x -> x[1]); 
    // when 
    Arrays.sort(a, comparator.reversed()); 
+1

'.thenComparing (x -> x [1])'을 추가 할 수 있습니다. –

+0

고마워, 나는 두 번째 칼럼을 잊어 버렸다 :) – Beri

관련 문제