Mapのソート
1559 ワード
HashMapは無秩序です
TreeMapはkey昇順でvalueでソートできません
LinkedHashMapが入っている順番は何ですか?
コードは次のとおりです.
TreeMapはkey昇順でvalueでソートできません
LinkedHashMapが入っている順番は何ですか?
コードは次のとおりです.
public class Test {
/**
* @param args
*/
public static void main(String[] args) {
Map<String,Integer> map = new HashMap<String, Integer>();
map.put("zhangsan", 18);
map.put("lisi", 17);
map.put("wangwu", 30);
map.put("maliu", 25);
map.put("subi", 26);
Set<Entry<String,Integer>> set = map.entrySet();
List<Entry<String,Integer>> list = new ArrayList(set);
Collections.sort(list, new Comparator<Entry<String,Integer>>() {
@Override
public int compare(Entry<String, Integer> o1,
Entry<String, Integer> o2) {
// if (o1.getValue() < o2.getValue()) {
// return -1;
// } else if (o1.getValue() > o2.getValue()) {
// return 1;
// } else {
// return 0;
// }
return o1.getValue().compareTo(o2.getValue());
}
});
map.clear();
map = new LinkedHashMap<String, Integer>();
for(Entry<String,Integer> entry: list){
map.put(entry.getKey(), entry.getValue());
}
for(Entry<String,Integer> entry: map.entrySet()){
System.err.println(entry.getKey() + "=" + entry.getValue());
}
}
}