У меня проблема с сортированным методом Java 8.
Я получил следующую структуру:
Map<String, Map<String, Long>>
Я пытаюсь отсортировать внешнюю карту сначала по ключу внешней карты (принудительный порядок), затем по сумме значений внутренней карты (Longs).) и поместите его в список Map.Entry в правильном порядке.Мне удалось отсортировать его по первому условию, но я не могу заставить его работать со вторым условием (затем метод сравнения) - есть ошибка типа.
queryResult.allCountersArray = queryResult.allCounters.entrySet().stream()
.sorted(Map.Entry.<String, Map<String, Long>>comparingByKey(Comparator.comparing(term -> term.getSortingKey()))
.thenComparing(Map.Entry.<String, Map<String, Long>>comparingByValue(Map.Entry.<String, Long>comparingByValue()))
)
.collect(Collectors.toList());
Error:(87, 49) java: no suitable method found for comparingByValue(java.util.Comparator<java.util.Map.Entry<java.lang.String,java.lang.Long>>)
method java.util.Map.Entry.<K,V>comparingByValue() is not applicable
(explicit type argument java.util.Map<java.lang.String,java.lang.Long> does not conform to declared bound(s) java.lang.Comparable<? super java.util.Map<java.lang.String,java.lang.Long>>)
method java.util.Map.Entry.<K,V>comparingByValue(java.util.Comparator<? super V>) is not applicable
(argument mismatch; java.util.Comparator<java.util.Map.Entry<java.lang.String,java.lang.Long>> cannot be converted to java.util.Comparator<? super java.util.Map<java.lang.String,java.lang.Long>>)