我有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());
非常感谢!