如何比较两个排序的OrderedMaps以在每个地图中寻找最高值?

时间:2020-03-12 11:24:05

标签: java hashmap java-stream

我有2个排序的OrderedMaps(我正在使用apache commons来更容易地进行迭代)。我已经使用stream()根据Key值以相反的顺序排序,这样fisrtKey()返回最高的条目。在两个排序的地图之间,我很感兴趣哪个键在两个之间排名最高。下面是代码示例:

OrderedMap<String, Double> sum = sumMap.entrySet()
                .stream()
                .sorted((Map.Entry.<String, Double>comparingByValue().reversed()))
                .collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue, (e1, e2) -> e1, LinkedMap::new));
OrderedMap<String, Double> highRat = highRatio.entrySet()
                .stream()
                .sorted((Map.Entry.<String, Double>comparingByValue().reversed()))
                .collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue, (e1, e2) -> e1, LinkedMap::new));

为清楚起见,两个Map都包含完全相同的Key条目,只是根据值对它们进行了不同的排序。我有兴趣在两张地图之间查找与两张地图上的位置相比哪个键最高。值不如键重要。我曾考虑过要转换为ArrayList,但除此之外,我陷入了困境:

List<String> sumKeys = new ArrayList<>(sum.keySet());
List<String> highRatKeys = new ArrayList<>(highRat.keySet());

非常感谢!

0 个答案:

没有答案