java如何从LinkedHashMap获取具有“最佳”值的键
我有一个问题: 我的HashMap看起来像:
[1,2,3,4] , 5
[1,3,3,4] , 2
[1,2,5,4] , -1
[1,2,4,4] , -1
我想对这个hashmap进行排序,它成功了!我得到一个LinkedHashMap
回。我想要的是得到具有最佳“值”的键。最好的“值”是smalles数,在本例中为-1。
有没有一个选项可以让int[][]
返回键[1,2,5,4] and [1,2,4,4]
?例如,如果最佳值为3,并且出现了5次,则应返回5个键。仅对一个最佳值相等。
我怎么能这么做
HashMap<int[], Double> hashMap = new HashMap<int[], Double>();
value = sortHashMap(hashMap);
int[][] bestKey;
// bestkey = value.getTheKeysWithTheBestValue // how could I do that? :(
// bestKey should be
// [ [1,2,5,4], [1,2,4,4] ]
private LinkedHashMap<int[], Double> sortHashMap(HashMap<int[], Double> hashMap) {
List<Entry<int[], Double>> list = new ArrayList<>(hashMap.entrySet());
list.sort(Entry.comparingByValue());
return list.stream().collect(Collectors.toMap(Entry::getKey, Entry::getValue,
(key1, key2) -> key2, LinkedHashMap::new));
}
# 1 楼答案
总体思路:
# 2 楼答案
使用
Collections.min(yourMap.values())
获取min
值,在映射的条目集上进行流式处理,并筛选与min
值具有相同值的条目,将条目映射到键,并收集到数组: