我有一个打印数据的for循环。在第一个位置是一个字母,在第二个位置是数字。 像这样:
H 8
T 3
A 9
F 4
如何按字典(按字母顺序)(键是字母)顺序对此数据进行排序?输出必须是:
A 9
F 4
H 8
T 3
我应该将数据放入列表并使用Collections.sort(list);
吗?在这种情况下,数字不在必要的位置。
P.S实际上这只是家庭作业的一小部分,但我不知道如何解决这个问题。
答案 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) );