2017-01-12 40 views
0

你好,我有這樣的如何在java中對數組進行排序?

String[] myString1= {"Hidayat", "20"}; 
    outerArr.add(myString1); 

    String[] myString2= {"Ryan", "10"}; 
    outerArr.add(myString2); 

    String[] myString2= {"irwan", "5"}; 
    outerArr.add(myString2); 

人一些簡單的代碼知道如何通過數字進行排序陣列outerArr與上升?

+0

你用於outerArr的列表類型是什麼? –

+0

http://alvinalexander.com/java/how-sort-java-string-array –

回答

1

您可以使用Comparator界面自定義排序:

Collections.sort(outerArr, new Comparator<String[]>() { 
    public int compare(String[] o1, String[] o2) 
    { 
     // for example you can compare integers 
     return Integer.parseInt(o2[1]) - Integer.parseInt(o1[1]); 
    } 
}); 
+0

thx之前,但如果一個數組動態循環 – user7328700

+0

您的數組在排序時更改? – Sergey

+1

這是關於這篇文章的主題,但這將取決於你的「動態數組」。 – AxelH

0

對於這種情況我更喜歡TreeMap .The TreeMap的類實現利用樹Map接口。 TreeMap提供了一種有效的方式來按鍵排序存儲鍵/值對,並允許快速檢索。

TreeMap<String, String> map = new TreeMap<>(); 
map.put("20", "Hidayat"); 
map.put("10", "Ryan"); 
map.put("5", "irwan"); 

用於檢索值

map.get("10"); // output = Ryan 
+0

你應該補充一點,這對每次插入都有一定的成本,當然這取決於使用情況。對於一個漂亮的靜態地圖,這不是一個問題,因爲列表將會更新很多,但只需要一次排序(打印或使用)一次,我會留在列表中 – AxelH

0

另一種方式來做到這一點,如果你使用的是Java 8使用lambda,首先創建一個類包含字符串和吸氣劑的2個成員字段每個成員,然後把這種方式:

outerArr.sort((Person o1, Person o2)->o1.getAge()-o2.getAge()); 

如果您不希望創建一個新的類,你可以撥打:

outerArr.sort((String[] o1, String[] o2)->Integer.parseInt(o1[1])-Integer.parseInt(o2[1]));