Подсчитайте частоты через группировку в TreeMap, затем выведите только значения со счётчиком больше одного. TreeMap задаст порядок по возрастанию чисел.
Подсчёт и вывод количества повторов чисел в массиве
Подсчитайте частоты через группировку в TreeMap, затем выведите только значения со счётчиком больше одного. TreeMap задаст порядок по возрастанию чисел.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Условие
Дан массив целых чисел. Необходимо вывести в консоль для каждого числа, которое встречается более одного раза, строку вида: число + " Hello = " + количество его повторений. Вывод должен быть упорядочен по возрастанию самих чисел.
List<Integer> numbers = List.of(1, 2, 5, 4, 4, 5, 2, 3, 6, 5);
Ответ
Подсчитайте частоты через группировку в TreeMap, затем выведите только значения со счётчиком больше одного. TreeMap задаст порядок по возрастанию чисел.
numbers.stream().collect(java.util.stream.Collectors.groupingBy(
java.util.function.Function.identity(),
java.util.TreeMap::new,
java.util.stream.Collectors.counting()))
.forEach((number, count) -> {
if (count > 1) System.out.println(number + " Hello = " + count);
});
Вывод:
2 Hello = 2
4 Hello = 2
5 Hello = 3
Счётчик означает общее число вхождений, не число повторов после первого. Время O(n log k), память O(k); null-элементы этим контрактом не поддерживаются.