读取了一段<Key, Value>数据,想当然的把它放进了HashMap里,生产数据的人不乐意了,呀,给你的数据是有顺序的。你显示出来就给乱了。嗯,确实是个问题哈。怎么办?
(1)最简单的就是使用把hashmap替换成LinkedListHashMap。后者会按你put的顺序放数据的,所以顺序读取就没得问题了。
(2 ) 数据本来就是无序的,现在就是要排序。把这些所有的entry数据放到一个list里边,按value值排序。具体使用Collections.sort()方法。见代码。
HashMap<String, String> map = new HashMap<String,String>();
map.put("sdfs", "3453");
map.put("543", "34");
map.put("45", "65");
map.put("27", "63");
map.put("23", "64");
ArrayList<Entry<String,String>> l = new ArrayList<Entry<String,String>>(map.entrySet());
Collections.sort(l, new Comparator<Object>(){
public int compare(Object e1, Object e2){
int v1 = Integer.parseInt(((Entry<String,String>)e1).getValue().toString());
int v2 = Integer.parseInt(((Entry)e2).getValue().toString());
return v1-v2;
}
});
for (Entry<String, String> e: l){
System.out.println(e.getKey()+" "+e.getValue());
}