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
沒有你在帖子中試過的東西的痕跡。請通過編輯並參考其他答案來添加它。實際上,我會說你沒有在這段代碼片段中隱藏發生了什麼。你應該嘗試分析它。還請澄清「'...他們的值的大小」(這是否意味着字符串長度?)編輯您的文章! –