2011-12-11 238 views
1

我有一個for-loop打印數據。第一個位置是一個字母,第二個是數字。 像這樣:在java中按字典順序排列(按字母順序)

H 8 
T 3 
A 9 
F 4 

我怎樣才能在詞典(字母)這個數據排序(關鍵是一個字母)的訂單?輸出必須是:

A 9 
F 4 
H 8 
T 3 

我應該把數據放入列表並使用Collections.sort(list);?在這種情況下,這些數字不在必要的位置。

P.S其實這是作業的一小部分,但我不知道如何解決這個問題。

+1

您應該在發佈之前嘗試搜索:http://stackoverflow.com/q/708698/590177 –

回答

3

如果你定義爲您的數據類型:

class Data implements Comparable<Data> { 
    private char letter; 
    private int number; 

    public int compareTo(Data d) { 
     if(letter > d.letter) return 1; 
     if(letter < d.letter) return -1; 
     return 0; 
    } 
} 

然後你就可以把你的Data實例在ArrayList和使用Collections.sort

0

您還可以使用的Map的實現,例如TreeMap,使用字符作爲Key並作爲Value數量。這樣你就不必將字符和數字封裝在一個對象中,仍然保持映射。

This answer to another question顯示瞭如何按照排序順序從該地圖中獲取密鑰。從那裏,你可以使用鍵並以排序順序獲取值。

0

*對於java用戶

將你的數據放入散列表(你的地圖)。

HashMap<Integer,String> map = new HashMap<Integer,String>(); 
youMap.put(H,8); 
youMap.put(T,3); 
youMap.put(A,9); 
youMap.put(F,4); 



List sortedKeys=new ArrayList(yourMap.keySet()); 
Collections.sort(sortedKeys); 

for(String key: sortedKeys){ 
system.out.println(key+" "+yourMap.get(key));