2017-02-20 10 views
0

2次元配列を持ち、2列あり、これを並べ替える必要があります。2列に基づく2次元配列の並べ替え


入力はこれです:

最初の列.....第二カラム

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

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

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

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

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


出力は次ある:

最初の列.....第2列

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

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

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

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

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


私はJavaで初心者です。

[] [] ARR)の配列をソートするためにINT(mySort(私は、関数のコードを聖霊降臨祭助けてください

+0

私が最初にすることにより第1、第2、およびその後の順序で順位を行う –

+3

あなたはまだそれを行っていない場合は、* *読みに時間がかかるしてください[ヘルプ。ページ](http://stackoverflow.com/h elp)、特に「ここで私はどのような話題を聞くことができますか?」(http://stackoverflow.com/help/on-topic)と「どのような種類の質問を避けるべきですか? ://stackoverflow.com/help/dont-ask)。また、[ツアーを受けてください](http://stackoverflow.com/tour)と[良い質問をする方法を読む](http://stackoverflow.com/help/how-to-ask)もご覧ください。最後に、[最小限の完全で検証可能な例](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

のJava 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

ありがとう、私は第2の列について忘れてしまった:) – Beri

関連する問題