在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其实这是作业的一小部分,但我不知道如何解决这个问题。
答
如果你定义为您的数据类型:
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));
您应该在发布之前尝试搜索:http://stackoverflow.com/q/708698/590177 –