Удалить повторяющиеся элементы из ArrayList в Java

Опубликовано: 3 Декабря, 2021

Предварительное условие: ArrayList в Java

Учитывая ArrayList, задача состоит в том, чтобы удалить повторяющиеся элементы ArrayList в Java.

Примеры:

Ввод: ArrayList = [1, 2, 2, 3, 4, 4, 4] 
Вывод: [1, 2, 3, 4] 

Ввод: ArrayList = [12, 23, 23, 34, 45, 45, 45, 45, 57, 67, 89] 
Вывод: [12, 23, 34, 45, 57, 67, 89]

Ниже приведены различные методы удаления повторяющихся элементов ArrayList в Java:

  • Использование Set: поскольку Set - это коллекция, в которой нет повторяющихся элементов. Следовательно, решение может быть достигнуто с помощью Set.

    Подход:

    1. Получите ArrayList с повторяющимися элементами.
    2. Преобразуйте ArrayList в Set.
    3. Теперь преобразуйте Set обратно в ArrayList. Это удалит все повторяющиеся элементы.

    Ниже представлена реализация описанного выше подхода:

    // Java code to illustrate remove duolicate
    // of ArrayList using hashSet<> method
    import java.util.*;
    public class GFG {
    public static void main(String args[])
    {
    // create a ArrayList String type
    ArrayList<String>
    gfg = new ArrayList<String>();
    // Initialize an ArrayList
    gfg.add( "Geeks" );
    gfg.add( "for" );
    gfg.add( "Geeks" );
    // print ArrayList
    System.out.println( "Original ArrayList : "
    + gfg);
    // -----Using LinkedHashSet-----
    System.out.println( " Using LinkedHashSet: " );
    // create a set and copy all value of list
    Set<String> set = new LinkedHashSet<>(gfg);
    // create a list and copy all value of set
    List<String> gfg1 = new ArrayList<>(set);
    // print ArrayList
    System.out.println( "Modified ArrayList : "
    + gfg1);
    // -----Using HashSet-----
    System.out.println( " Using HashSet: " );
    // create a set and copy all value of list
    Set<String> set1 = new HashSet<>(gfg);
    // create a list and copy all value of set
    List<String> gfg2 = new ArrayList<>(set);
    // print ArrayList
    System.out.println( "Modified ArrayList : "
    + gfg2);
    }
    }
    Выход:
    Исходный ArrayList: [Компьютерщики, для компьютерных фанатов]
    
    Использование LinkedHashSet:
    
    Измененный ArrayList: [Компьютерщики, для]
    
    Использование HashSet:
    
    Измененный ArrayList: [Компьютерщики, для]
    
  • Использование Java 8 Lambdas:

    Подход:

    1. Получите ArrayList с повторяющимися элементами.
    2. Преобразуйте ArrayList в Stream с помощью метода stream ().
    3. Задайте условие фильтра, чтобы оно было отличным, используя метод strict ().
    4. Соберите отфильтрованные значения в виде списка с помощью метода collect (). В этом списке будут удалены повторяющиеся элементы.

    Ниже представлена реализация описанного выше подхода:

    Пример:

    // Java code to illustrate remove duolicate
    // of ArrayList using hashSet<> method
    import java.util.*;
    import java.util.stream.Collectors;
    public class GFG {
    public static void main(String args[])
    {
    // create a ArrayList String type
    ArrayList<String>
    gfg = new ArrayList<String>();
    // Initialize an ArrayList
    gfg.add( "Geeks" );
    gfg.add( "for" );
    gfg.add( "Geeks" );
    // print ArrayList
    System.out.println( "Original ArrayList : "
    + gfg);
    // create a list and copy all distinct value of list
    List<String> gfg1 = gfg.stream()
    .distinct()
    .collect(Collectors.toList());
    // print modified list
    System.out.println( "Modified List : " + gfg1);
    }
    }
    Выход:
    Исходный ArrayList: [Компьютерщики, для компьютерных фанатов]
    Измененный список: [Компьютерщики, для]
    

Вниманию читателя! Не прекращайте учиться сейчас. Ознакомьтесь со всеми важными концепциями Java Foundation и коллекций с помощью курса "Основы Java и Java Collections" по доступной для студентов цене и будьте готовы к работе в отрасли. Чтобы завершить подготовку от изучения языка к DS Algo и многому другому, см. Полный курс подготовки к собеседованию .