Как сравнить два отсортированных OrderedMaps, чтобы искать самые высокие значения в каждой карте? - PullRequest
0 голосов
/ 12 марта 2020

У меня есть 2 отсортированных OrderedMaps (я использую apache общих для упрощения итерации). Я использовал 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));

Для ясности, обе карты содержат одинаковые записи ключей, они просто упорядочены по-разному в зависимости от значений. Я заинтересован в том, чтобы найти между двумя картами, какой ключ или ключи являются самыми высокими по сравнению с положением на обеих картах. Значения не так важны, как Ключ (и). Я думал о преобразовании в ArrayList, но вне этого я застрял:

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

Большое спасибо!

...