Java 查找两个ArrayLists中的共同元素

Java 查找两个ArrayLists中的共同元素

给定两个ArrayLists,任务是在Java中打印两个ArrayLists中的所有共同元素。

例子

输入: List1 = ["Hii", "Geeks", "for", "Geeks"], 
       List2 = ["Hii", "Geeks", "Gaurav"]
输出: [Hii, Geeks, Geeks]

输入: List1 = ["a", "b", "c", "d", "e", "f"], 
       List2 = ["b", "d", "e", "h", "g", "c"]
输出:[b, c, d, e]
  1. 使用 Collections.retainAll() 方法

语法:
Collections1.retainAll(Collections2)

这个方法只保留两个集合的共同元素 在Collection1中保留两个Collection的共同元素。

步骤:

  1. 获取两个ArrayLists。
  2. 使用Collection.retainAll()方法找到两个列表中的共同元素。这个方法只在Collection1中保留两个集合的共同元素。
  3. List 1现在只包含共同元素。

下面是上述方法的实现。

程序:通过修改List1的内容。

    // Java Program to find common elements
    // in two ArrayLists
    // Using retainAll() method
      
    // import ArrayList package
    import java.util.ArrayList;
      
    public class GFG {
      
        // main method
        public static void main(String[] args)
        {
      
            // create ArrayList list1
            ArrayList<String>
                list1 = new ArrayList<String>();
      
            // Add values in ArrayList
            list1.add("Hii");
            list1.add("Geeks");
            list1.add("for");
            list1.add("Geeks");
      
            // print list 1
            System.out.println("List1: "
                               + list1);
      
            // Create ArrayList list2
            ArrayList<String>
                list2 = new ArrayList<String>();
      
            // Add values in ArrayList
            list2.add("Hii");
            list2.add("Geeks");
            list2.add("Gaurav");
      
            // print list 2
            System.out.println("List2: "
                               + list2);
      
            // Find the common elements
            list1.retainAll(list2);
      
            // print list 1
            System.out.println("Common elements: "
                               + list1);
        }
    }

输出:

List1: [Hii, Geeks, for, Geeks]
List2: [Hii, Geeks, Gaurav]
Common elements: [Hii, Geeks, Geeks]

程序 2: 通过保留List1的内容

// Java Program to find common elements
// in two ArrayLists
// Using retainAll() method
  
// import ArrayList package
import java.util.ArrayList;
  
public class GFG {
  
    // main method
    public static void main(String[] args)
    {
  
        // create ArrayList list1
        ArrayList<String>
            list1 = new ArrayList<String>();
  
        // Add values in ArrayList
        list1.add("Hii");
        list1.add("Geeks");
        list1.add("for");
        list1.add("Geeks");
  
        // print list 1
        System.out.println("List1: "
                           + list1);
  
        // Create ArrayList list2
        ArrayList<String>
            list2 = new ArrayList<String>();
  
        // Add values in ArrayList
        list2.add("Hii");
        list2.add("Geeks");
        list2.add("Gaurav");
  
        // print list 2
        System.out.println("List2: "
                           + list2);
  
        // Create ArrayList list3
        ArrayList<String>
            list3 = new ArrayList<String>(list1);
  
        // Store the comparison output
        // in ArrayList list3
        list3.retainAll(list2);
  
        // print list 3
        System.out.println("Common elements: "
                           + list3);
    }
}

输出:

List1: [Hii, Geeks, for, Geeks]
List2: [Hii, Geeks, Gaurav]
Common elements: [Hii, Geeks, Geeks]
  1. 使用 Stream filter

语法:

list1.stream()
    .filter(list2::contains)
    .collect(Collectors
    .toList()));

This method returns element if found in second list.

步骤:

  1. 首先创建两个ArrayList并添加列表的值。
  2. 使用stream()方法将ArrayList转换为Stream。
  3. 使用contains()方法将过滤条件设定为不同。
  4. 使用collect()方法将过滤后的值收集为列表。这个列表将返回两个列表中的共同元素。
  5. 打印列表3

下面是上述方法的实现。

代码:

// Java Program to find common elements
// in two ArrayLists
// Using  Stream filter method
  
// import ArrayList package
import java.util.*;
import java.util.stream.*;
  
public class GFG {
  
    // main method
    public static void main(String[] args)
    {
  
        // create ArrayList list1
        ArrayList<String>
            list1 = new ArrayList<String>();
  
        // Add values in ArrayList
        list1.add("Hii");
        list1.add("Geeks");
        list1.add("for");
        list1.add("Geeks");
  
        // print list 1
        System.out.println("List1: "
                           + list1);
  
        // Create ArrayList list2
        ArrayList<String>
            list2 = new ArrayList<String>();
  
        // Add values in ArrayList
        list2.add("Hii");
        list2.add("Geeks");
        list2.add("Gaurav");
  
        // print list 2
        System.out.println("List2: "
                           + list2);
  
        // Find common elements
        System.out.print("Common elements: ");
        System.out.println(list1.stream()
                               .filter(list2::contains)
                               .collect(Collectors
                                            .toList()));
    }
}

输出:

List1: [Hii, Geeks, for, Geeks]
List2: [Hii, Geeks, Gaurav]
Common elements: [Hii, Geeks, Geeks]
  1. Naive 方法:
    1. 首先创建两个ArrayList并添加列表的值。
    2. 创建一个临时ArrayList,包含共同的元素。
    3. 遍历list1并使用ArrayList.contains()方法检查该元素是否存在于list2中。
    4. 如果发现,将其添加到列表3中
    5. 打印list3中的共同元素

下面是上述方法的实现。

// Java Program to find common elements
// in two ArrayLists
// Using  Stream filter method
  
// import ArrayList package
import java.util.ArrayList;
  
public class GFG {
  
    // main method
    public static void main(String[] args)
    {
  
        // create ArrayList list1
        ArrayList<String>
            list1 = new ArrayList<String>();
  
        // Add values in ArrayList
        list1.add("Hii");
        list1.add("Geeks");
        list1.add("for");
        list1.add("Geeks");
  
        // print list 1
        System.out.println("List1: "
                           + list1);
  
        // Create ArrayList list2
        ArrayList<String>
            list2 = new ArrayList<String>();
  
        // Add values in ArrayList
        list2.add("Hii");
        list2.add("Geeks");
        list2.add("Gaurav");
  
        // print list 2
        System.out.println("List2: "
                           + list2);
  
        // Create ArrayList list3
        ArrayList<String>
            list3 = new ArrayList<String>();
  
        // Find common elements
        // while iterating through list1
        for (String temp : list1) {
  
            // Check if the element is
            // present in list2 or not
            if (list2.contains(temp)) {
  
                // Since present, add it to list3
                list3.add(temp);
            }
        }
  
        // print common elements from list 3
        System.out.println("Common elements: "
                           + list3);
    }
}

输出:

List1: [Hii, Geeks, for, Geeks]
List2: [Hii, Geeks, Gaurav]
Common elements: [Hii, Geeks, Geeks]

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程