TGViewer
Java библиотека Java библиотека @javalib · 30.6K subscribers
Post #7787 704
Топ-3 товаров через Map.merge

Есть названия покупок с повторами. Сначала считаем частоты, затем сортируем записи:
Map<String, Integer> counts = new HashMap<>();
for (String item : purchases) {
counts.merge(item, 1, Integer::sum);
}
counts.entrySet().stream()
.sorted(Map.Entry.<String, Integer>
comparingByValue().reversed()
.thenComparing(Map.Entry.comparingByKey()))
.limit(3)
.forEach(System.out::println);


Второй критерий делает порядок при одинаковой частоте предсказуемым. Пример предполагает непустые, ненулевые названия.

Для большого количества разных товаров полная сортировка может быть лишней: топ-k можно поддерживать ограниченной кучей. Сначала оцените размер данных.

#Java

Полезные ресурсы по Java 👩‍💻| Наш канал в MAX 🟪
  • 👍 1
  • 🔥 1
More from @javalib
  1. Oct 16, 2026Почему equals у массивов в Java не сравнивает содержимое? В Java массив выглядит как конте…
  2. Oct 16, 2026Какая структура данных в коллекции List? В Java интерфейс List представляет упорядоченную…
  3. Oct 16, 2026Post #7784
  4. Oct 16, 2026Знали, что Map.getOrDefault может вызвать загрузку, даже когда ключ уже есть? Java сначала…
  5. Oct 15, 2026👩‍💻 Подводные камни Retry Policy в Java В статье на реальных примерах показывают retry-ш…
  6. Oct 15, 2026Память в Java растёт? Сначала выясните, что удерживает объекты Рост потребления памяти не…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →