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

时间:2011-12-11 15:12:27

标签: java sorting

我有一个打印数据的for循环。在第一个位置是一个字母,在第二个位置是数字。 像这样:

H 8
T 3
A 9
F 4

如何按字典(按字母顺序)(键是字母)顺序对此数据进行排序?输出必须是:

A 9
F 4
H 8
T 3

我应该将数据放入列表并使用Collections.sort(list);吗?在这种情况下,数字不在必要的位置。

P.S实际上这只是家庭作业的一小部分,但我不知道如何解决这个问题。

3 个答案:

答案 0 :(得分: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

答案 1 :(得分:0)

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

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

答案 2 :(得分:0)

*适用于java用户

将您的数据放入hashmap(yourMap)。

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) );
相关问题