Я хотел отсортировать текстовый файл, содержащий данные в следующем формате:
A 8
B 2
C 5
по стоимости. Итак, я нашел это:
Map<String, Long> getSortedLinkedHashMappedRankingArray(String[] rankingArray) {
return Arrays
.stream(rankingArray)
.map(it -> it.split("\\s+"))
.collect(Collectors.toMap(it -> it[FIRST_PART], it -> Long.valueOf(it[SECOND_PART])))
.entrySet()
.stream()
.sorted(Map.Entry.comparingByValue())
.collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue,
(oldValue, newValue) -> oldValue, LinkedHashMap::new));
}
Я понимаю почти все, кроме последней операции сбора:
.collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue,
(oldValue, newValue) -> oldValue, LinkedHashMap::new))
Не могли бы вы объяснить, что здесь происходит? Что такое oldValue и newValue и как это работает?
Также хотелось бы услышать, правильно ли я понимаю часть перед операцией collect
.
- Итак, сначала мы создаем поток для данного массива.
- Затем мы разделяем каждый элемент массива с пустым пространством, чтобы мы
можно указать имя в качестве ключа и число в качестве значения на карте.
- Затем мы создаем множество элементов карты и создаем поток.
- Затем мы сортируем по значению.
правый
PS: я читал Java Сортировать карту по объяснению ключа , но я не понял этого.