我正在努力完成以下任务: 我正在向LinkedHashMap添加字符和整数(int是某个字符的出现次数)(是的,不幸的是我必须使用它)。
如何将其打印出来?
LinkedHashMap<Character, Integer> map = new LinkedHashMap();
int a=7;
int b=6;
int c=9;
map.put('a', a);
map.put('b', b);
map.put('c', c);
输出应如下所示:
c 9
a 7
b 6
答案 0 :(得分:0)
您可以将地图转换为可以排序的TreeMap。默认映射按键的自然顺序排序,当您使用Integer时,这应该足够了...
TreeMap tm = new TreeMap( map );
答案 1 :(得分:0)
如何尝试这样,
根据值DESC 排序
的方法public static Map<Character, Integer> mapSortedByValues(Map<Character, Integer> map) {
List<Map.Entry<Character, Integer>> entryList = new LinkedList<Map.Entry<Character, Integer>>(map.entrySet());
Collections.sort(entryList,
new Comparator<Map.Entry<Character, Integer>>() {
@Override
public int compare(Map.Entry<Character, Integer> e1, Map.Entry<Character, Integer> e2) {
return (e1.getValue()).compareTo(e2.getValue());
}
}
);
Collections.reverse(entryList); //Reverse value DESC
Map<Character, Integer> sortedMap = new LinkedHashMap<Character, Integer>();
for (Map.Entry<Character, Integer> entry : entryList)
sortedMap.put(entry.getKey(), entry.getValue());
return sortedMap;
}
测试值排序;
public static void main(String[] args) {
LinkedHashMap<Character, Integer> map = new LinkedHashMap<Character, Integer>();
map.put('a', 7);
map.put('b', 9);
map.put('c', 6);
Map sortedMap = mapSortedByValues(map);
System.out.println(sortedMap);
}
将输出
{c=9, a=7, b=6}
答案 2 :(得分:0)
这是代码
List list =new LinkedList<Map.Entry<String, Integer>>( map.entrySet() );
Collections.sort(list, (Map.Entry o1, Map.Entry o2) ->{
return (o2.getValue()).compareTo(o1.getValue())
});
Map result = new LinkedHashMap<String, Integer>();
for (Map.Entry entry : list){
result.put( entry.getKey(), entry.getValue() );
}
map = result
答案 3 :(得分:0)
map.entrySet().stream()
.sorted(Collections.reverseOrder(Map.Entry.comparingByValue()))
.forEach(entry -> System.out.println(entry.getKey() + " " + entry.getValue()));
这反转了正常的compareTo以使订单反转。如果你可以使用自然顺序,那就更简单了:
.sorted(Map.Entry::comparingByValue)