java prettyprint-override">LinkedHashMap<Character, Double> sorted = new LinkedHashMap<>();
tableProbability.entrySet()
.stream()
.sorted(Map.Entry.comparingByValue(Comparator.reverseOrder()))
.forEachOrdered(x -> sorted.put(x.getKey(), x.getValue()));
有没有办法保留重复订单,或者至少当它找到重复订单时,把它放在价值相等的订单后面?
您的代码运行良好,但您可以将其简化如下:
>
源映射:
LinkedHashMap<Character, Double> tableProbability =
new LinkedHashMap<>() {{
put('M', 0.1);
put('U', 0.3);
put('L', 0.3);
put('T', 0.2);
put('I', 0.1);
}};
System.out.println(tableProbability);
// {M=0.1, U=0.3, L=0.3, T=0.2, I=0.1}
此代码运行良好:
LinkedHashMap<Character, Double> sorted = new LinkedHashMap<>();
tableProbability.entrySet()
.stream()
.sorted(Map.Entry.comparingByValue(Comparator.reverseOrder()))
.forEachOrdered(x -> sorted.put(x.getKey(), x.getValue()));
System.out.println(sorted);
// {U=0.3, L=0.3, T=0.2, M=0.1, I=0.1}
LinkedHashMap<Character, Double> sorted2 = tableProbability
.entrySet().stream()
.sorted(Map.Entry.comparingByValue(Comparator.reverseOrder()))
.collect(LinkedHashMap::new,
(col, e) -> col.put(e.getKey(), e.getValue()),
HashMap::putAll);
System.out.println(sorted2);
// {U=0.3, L=0.3, T=0.2, M=0.1, I=0.1}
考虑下面的哈希图: 具有诸如 我需要按值对hashmap进行降序排序,但如果值相等,则按键进行升序排序: 到目前为止,我试着分别按键排序,然后按值排序,但我不相信这种方法。除了创建更多的hashmaps之外,还有什么好方法呢?
所以我遇到了这个方法,它能够按值对HashMaps进行排序。 我想在比较器上使用方法,但是我似乎找不到合适的地方放它。
我试图排序的hashmap的结构的值从高到低。 我在下面创建了一个函数来对数据进行排序。 我收到以下错误: 异常在线程"main"java.lang.ClassCastException:类java.lang.String不能转换为类java.lang.整数(java.lang.String和java.lang.整数在加载器'bootstrap'的模块java.base) 我相信我的错误是由上面的
如何搜索前面有数字值的排序arraylist,计划是我要用最大到最小的数字对listview进行排序
问题内容: 我需要根据存储在其中的值对我进行排序。在包含存储在手机联系人的名字。 另外,我还要求在对值进行排序时对键进行自动排序,否则你可以说键和值绑定在一起,因此值的任何更改都应反映在键中。 要求的输出: 问题答案: 尝试下面的代码对我来说很好。你可以选择升序和降序 编辑:版本2 使用了新的Java功能,例如流for-each等 如果值相同,则地图将按键排序
边走边学Java(Python背景)。简单的单词计数程序在Java7代码(不能用J8!)。 我有一个单词的哈希图:计数对。现在我需要按计数(递减顺序)排序,并打破按字母顺序使用word的联系。 我正在寻找对这个想法的反馈: 遍历HashMap中的映射项(me) 使用me.getkey=K和me.getvalue=v new map.entry reverse_me=(V,K){不确定此语法} 将r