1
我有一个LinkedHashMap < Integer,HashSet < Integer >>我想根据它们值的大小递减顺序对键进行排序。我目前有来自另一个线程的这个片段,但我不知道如何改变它来处理我的案例。如何按每个键值的大小对LinkedHashMap进行排序?
myMap.entrySet().stream()
.sorted(Map.Entry.comparingByValue(Comparator.reverseOrder()))
.collect(Collectors.toMap(
Map.Entry::getKey,
Map.Entry::getValue,
(x,y) -> {throw new AssertionError();},
LinkedHashMap::new
));
这是我已经试过
List<Map.Entry<String, Integer>> entries =
new ArrayList<Map.Entry<String, Integer>>(map.entrySet());
Collections.sort(entries, new Comparator<Map.Entry<String, Integer>>() {
public int compare(Map.Entry<String, Integer> a, Map.Entry<String,Integer> b){
return a.getValue().size().compareTo(b.getValue().size());
}
});
Map<String, Integer> sortedMap = new LinkedHashMap<String, Integer>();
for (Map.Entry<String, Integer> entry : entries) {
sortedMap.put(entry.getKey(), entry.getValue());
}
我只是在那里加入.size()。我从这个线程找到它。我所指的大小是HashSet中的项目数量。它通常只是getValue()。size(),但它在这里不起作用。
的可能的复制[如何排序地图在Java中的值?]( http://stackoverflow.com/questions/109383/how-to-sort-a-mapkey-value-on-the-values-in-java) –
我试着实现他们所做的(o1.getValue()。size ())。compareTo(o2.getValue()。size())但它没有工作。我不知道如何比较值的大小是我的问题。 – pmdaly
没有你在帖子中试过的东西的痕迹。请通过编辑并参考其他答案来添加它。实际上,我会说你没有在这段代码片段中隐藏发生了什么。你应该尝试分析它。还请澄清“'...他们的值的大小”(这是否意味着字符串长度?)编辑您的文章! –