2012-02-15 54 views
2

我嘗試僅排序數組的選定部分。如何從給定索引開始對多維數組進行排序

我試試這個代碼:

public static void shortArray(String[][] array){ 
    Arrays.sort(array, new Comparator<String[]>() { 
     @Override 
     public int compare(final String[] entry1, final String[] entry2) { 
      final float time1 = Float.parseFloat(entry1[1]); 
      final float time2 = Float.parseFloat(entry2[1]); 
      if (time2 > time1) { 
       return 1; 
      } else if (time2 == time1) { 
       return 0; 
      } else { 
       return -1; 
      } 
     } 
    }); 
} 

但排序整個數組。

有什麼辦法從特定索引開始排序?

回答

4

是的,通過創建數組的列表視圖(通過Arrays.asList),並使用list.subListCollections.sort排序它的一部分。

String[][] arr = {{"5.0","a"},{"3.0","b"},{"2.0","c"},{"4.0","d"},{"1.0","e"}}; 

// Sort elements in range 2 ... arr.length 
List<String[]> sublist = Arrays.asList(arr).subList(2, arr.length); 
Collections.sort(sublist, new Comparator<String[]>() { 
    @Override 
    public int compare(String[] a1, String[] a2) { 
     return Float.valueOf(a1[0]).compareTo(Float.valueOf(a2[0])); 
    } 
}); 


// Prints [[5.0, a], [3.0, b], [1.0, e], [2.0, c], [4.0, d]] 
//   ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ 
//   not affected   sorted by first index 
System.out.println(Arrays.deepToString(arr)); 
+0

好吧我會等待thx – Carlo 2012-02-15 10:00:21

+0

它是否也適用於多維數組? – Carlo 2012-02-15 10:02:46

+0

我修復了示例代碼:-) – aioobe 2012-02-15 10:06:51

1

從主列表中取出子列表,從特定索引(您需要)開始。然後使用

Collections.sort(sublist) 

希望有幫助。

相關問題