在java中按字典顺序排列(按字母顺序)

问题描述:

我有一个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://*.com/q/708698/590177 –

如果你定义为您的数据类型:

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

您还可以使用的Map的实现,例如TreeMap,使用字符作为Key并作为Value数量。这样你就不必将字符和数字封装在一个对象中,仍然保持映射。

This answer to another question显示了如何按照排序顺序从该地图中获取密钥。从那里,你可以使用键并以排序顺序获取值。

*对于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));