Подсчёт и вывод количества повторов чисел в массиве

Подсчитайте частоты через группировку в 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-элементы этим контрактом не поддерживаются.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее