2012-03-15 107 views
0

我有一個關於排序的問題。如何對二維數組進行排序?

int[][] array = {{4,2},{1,7},{4,5},{1,2},{1,1},{4,1}}; 

對這個數組進行排序後,會變得如下圖所示。

int[][] array = {{1,1},{1,2},{1,7},{4,1},{4,2},{4,5}}; 

我倒感到困惑的是,如果我在第一次對行進行排序和執行上,在第二列的排序,我怎麼會改變兩人在同一時間的價值的時候我排序的行和列。

回答

0

看到這個例子...

Sort a two dimensional array based on one column 
The first column is a date of format "yyyy.MM.dd HH:mm" and the second column is a String. 

既然你說的2-d陣列,我認爲 「格式的日期......」 是指一個字符串。這是用於排序String [] []的二維數組的代碼:

import java.util.Arrays; import java.util.Comparator;

public class Asdf { 

public static void main(final String[] args) { 
    final String[][] data = new String[][] { 
      new String[] { "2009.07.25 20:24", "Message A" }, 
      new String[] { "2009.07.25 20:17", "Message G" }, 
      new String[] { "2009.07.25 20:25", "Message B" }, 
      new String[] { "2009.07.25 20:30", "Message D" }, 
      new String[] { "2009.07.25 20:01", "Message F" }, 
      new String[] { "2009.07.25 21:08", "Message E" }, 
      new String[] { "2009.07.25 19:54", "Message R" } }; 

    Arrays.sort(data, new Comparator<String[]>() { 
     @Override 
     public int compare(final String[] entry1, final String[] entry2) { 
      final String time1 = entry1[0]; 
      final String time2 = entry2[0]; 
      return time1.compareTo(time2); 
     } 
    }); 

    for (final String[] s : data) { 
     System.out.println(s[0] + " " + s[1]); 
    } 
} 

}

+0

對不起,當我跑這一項,它表明「比較不能被解析爲一個類型」和「數組不能得到解決」。這裏有什麼問題? – 2012-03-15 08:02:01

+0

你需要做... import java.util.Arrays; import java.util.Comparator; – 2012-03-15 08:09:56

+0

非常感謝。儘管我仍然不明白它是如何工作的,但它實際上可以解決我的問題。 :) – 2012-03-15 23:51:36

相關問題