📌  相关文章
📜  从Java中的ArrayList中删除重复的元素

📅  最后修改于: 2022-05-13 01:55:03.075000             🧑  作者: Mango

从Java中的ArrayList中删除重复的元素

先决条件: Java中的 ArrayList

给定一个 ArrayList,任务是删除Java中 ArrayList 的重复元素。

例子:

Input: ArrayList = [1, 2, 2, 3, 4, 4, 4] 
Output: [1, 2, 3, 4] 

Input: ArrayList = [12, 23, 23, 34, 45, 45, 45, 45, 57, 67, 89] 
Output: [12, 23, 34, 45, 57, 67, 89]

以下是在Java中删除 ArrayList 中重复元素的各种方法:

  • 使用集合:因为集合是一个不包含任何重复元素的集合。因此,解决方案可以在 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
                gfg = new ArrayList();
      
            // 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("\nUsing LinkedHashSet:\n");
      
            // create a set and copy all value of list
            Set set = new LinkedHashSet<>(gfg);
      
            // create a list and copy all value of set
            List gfg1 = new ArrayList<>(set);
      
            // print ArrayList
            System.out.println("Modified ArrayList : "
                               + gfg1);
      
            // -----Using HashSet-----
            System.out.println("\nUsing HashSet:\n");
      
            // create a set and copy all value of list
            Set set1 = new HashSet<>(gfg);
      
            // create a list and copy all value of set
            List gfg2 = new ArrayList<>(set);
      
            // print ArrayList
            System.out.println("Modified ArrayList : "
                               + gfg2);
        }
    }
    
    输出:
    Original ArrayList : [Geeks, for, Geeks]
    
    Using LinkedHashSet:
    
    Modified ArrayList : [Geeks, for]
    
    Using HashSet:
    
    Modified ArrayList : [Geeks, for]
    
  • 使用Java 8 Lambda:

    方法:

    1. 获取包含重复元素的 ArrayList。
    2. 使用 stream() 方法将 ArrayList 转换为 Stream。
    3. 使用 distinct() 方法将过滤条件设置为不同。
    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
                gfg = new ArrayList();
      
            // 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 gfg1 = gfg.stream()
                                    .distinct()
                                    .collect(Collectors.toList());
      
            // print modified list
            System.out.println("Modified List : " + gfg1);
        }
    }
    
    输出:
    Original ArrayList : [Geeks, for, Geeks]
    Modified List : [Geeks, for]