Как найти дубликаты в массиве

Как найти дубликаты в массиве[Как найти дубликаты в массиве]

Иногда возникает необходимость найти дубликаты в массиве. В данной статье мы расскажем, как это сделать двумя способами.

Задача

Итак, у нас есть массив. Это может быть массив любых объектов или примитивов. Для примера возьмём массив строк:

String[] animals = {"cat", "dog", "cow", "sheep", "cat", "dog"};

Теперь попробуем найти дублирующиеся строки в этом массиве.

Поиск дубликатов перебором

Сначала объявим вспомогательную коллекцию для хранения дубликатов – HashSet:

Set<T> duplicates = new HashSet<>();

Каждый раз, находя дубликат в массиве, мы будет его класть в данный HashSet.

Далее мы будем проходить по элементам массива, используя два цикла. В первом цикле мы извлекаем элемент массива и поочерёдно сравниваем его с остальными элементами массива, используя второй цикл:

for (int i = 0; i < a.length; i++) {
    T e1 = a[i];
    if (e1 == null) continue; // игнорируем null

    // сравниваем каждый элемент со всеми остальными
    for (int j = 0; j < a.length; j++) {
        if (i == j) continue; // не проверяем элемент с собой же
        T e2 = a[j];
        if (e1.equals(e2)) {
            // дубликат найден, сохраним его
            duplicates.add(e2);
        }
    }
}

И в конце возвратим найденные дубликаты:

return new ArrayList<>(duplicates);

Проверка

Проверим нашу программу:

String[] animals = {"cat", "dog", "cow", "sheep", "cat", "dog"};

System.out.println("Входной массив: " + Arrays.toString(animals));
System.out.println("Дубликаты: " + getDuplicatesWithIteration(animals));

Исходный код

package ru.javalessons.arrays;

import java.util.*;

public class ArrayFindDuplicates {
    public static void main(String[] args) {
        String[] animals = {"cat", "dog", "cow", "sheep", "cat", "dog"};

        System.out.println("Входной массив: " + Arrays.toString(animals));
        System.out.println("Дубликаты: " + getDuplicatesWithIteration(animals));
    }

    public static <T> List<T> getDuplicatesWithIteration(T[] a) {
        Set<T> duplicates = new HashSet<>();
        for (int i = 0; i < a.length; i++) {
            T e1 = a[i];
            if (e1 == null) continue; // игнорируем null

            // сравниваем каждый элемент со всеми остальными
            for (int j = 0; j < a.length; j++) {
                if (i == j) continue; // не проверяем элемент с собой же
                T e2 = a[j];
                if (e1.equals(e2)) {
                    // дубликат найден, сохраним его
                    duplicates.add(e2);
                }
            }
        }
        return new ArrayList<>(duplicates);
    }
}

Заключение

На данном примере мы разобрали, как находить дубликаты в массиве. Это может быть массив любых объектов.

Как найти дубликаты в массиве

Комментарии 5

  • Алексей Титов
    Автор: Алексей Титов Добавлено 9 декабря, 2025 в 13:52

    Отличное решение задачи поиска дубликатов в массиве с использованием HashSet и перебором элементов! Это простой и эффективный способ обнаружения повторяющихся элементов.

  • Наталия Меркулова
    Автор: Наталия Меркулова Добавлено 27 декабря, 2025 в 13:30

    Отличный метод поиска дубликатов в массиве! Использование HashSet для хранения найденных дубликатов позволяет эффективно обрабатывать большие объемы данных.

  • Пётр Борисов
    Автор: Пётр Борисов Добавлено 31 декабря, 2025 в 17:45

    Один из способов поиска дубликатов в массиве заключается в использовании HashSet для хранения найденных дубликатов. Перебор всех элементов массива с последующим сравнением каждого элемента с остальными позволяет обнаружить дубликаты. Этот метод является эффективным, хотя может потребовать времени, пропорционального квадрату размера массива. Важно учитывать, что использование HashSet предотвращает добавление одинаковых элементов, что обеспечивает уникальность найденных дубликатов.

  • Ксения Семёнова​
    Автор: Ксения Семёнова​ Добавлено 14 февраля, 2026 в 16:07

    Поиск дубликатов в массиве может быть решён двумя способами, одним из которых является перебор элементов и использование HashSet для хранения найденных дубликатов. Для этого создаётся HashSet, в котором будут храниться повторяющиеся элементы. Далее, с помощью двух циклов происходит сравнение каждого элемента массива с остальными, и при обнаружении дубликата он добавляется в HashSet. Такой метод позволяет эффективно находить повторяющиеся элементы в массиве и обрабатывать их в дальнейшем в зависимости от поставленных задач.

  • Бархатная Кошка
    Автор: Бархатная Кошка Добавлено 17 февраля, 2026 в 09:31

    Поиск дубликатов в массиве: HashSet и перебор элементов.