Encuentra elementos comunes en dos ArrayLists en Java

Requisito previo: ArrayList en Java

Dadas dos ArrayLists, la tarea es imprimir todos los elementos comunes en ambos ArrayLists en Java.

Ejemplos:

Input: List1 = ["Hii", "Geeks", "for", "Geeks"], 
       List2 = ["Hii", "Geeks", "Gaurav"]
Output: [Hii, Geeks, Geeks]

Input: List1 = ["a", "b", "c", "d", "e", "f"], 
       List2 = ["b", "d", "e", "h", "g", "c"]
Output:[b, c, d, e]
  1. Usando el método Collections.retainAll()

    Sintaxis:

    Collections1.retainAll(Collections2)
    
    This method keeps only the common elements
    of both Collection in Collection1.
    

    Acercarse:

    1. Obtenga las dos ArrayLists.
    2. Encuentre los elementos comunes en ambas listas usando el método Collection.retainAll(). Este método mantiene solo los elementos comunes de ambas Collection en Collection1.
    3. La Lista 1 ahora contiene solo los elementos comunes.

    A continuación se muestra la implementación del enfoque anterior:
    Programa: Al modificar el contenido de 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);
        }
    }
    Producción:

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

    Programa 2: conservando el contenido de 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);
        }
    }
    Producción:

    List1: [Hii, Geeks, for, Geeks]
    List2: [Hii, Geeks, Gaurav]
    Common elements: [Hii, Geeks, Geeks]
    
  2. Uso del filtro de transmisión

    Sintaxis:

    list1.stream()
        .filter(list2::contains)
        .collect(Collectors
        .toList()));
    
    This method returns element if found in second list.
    

    Acercarse:

    1. Primero cree dos ArrayList y agregue valores de lista.
    2. Convierta ArrayList en Stream usando el método stream().
    3. Establezca la condición del filtro para que sea distinta usando el método contains().
    4. Recopile los valores filtrados como Lista usando el método collect(). Esta lista devolverá un elemento común en ambas listas.
    5. Imprimir lista3

    A continuación se muestra la implementación del enfoque anterior:

    Programa:

    // 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()));
        }
    }
    Producción:

    List1: [Hii, Geeks, for, Geeks]
    List2: [Hii, Geeks, Gaurav]
    Common elements: [Hii, Geeks, Geeks]
    
  3. Enfoque ingenuo:
    1. Primero cree dos ArrayList y agregue valores de lista.
    2. Cree una ArrayList temporal para contener elementos comunes.
    3. Recorra la lista1 y verifique si ese elemento está presente en la lista2 usando el método ArrayList.contains().
    4. Si lo encuentra, agréguelo a la lista3
    5. Imprime los elementos comunes de list3

    A continuación se muestra la implementación del enfoque anterior:

    // 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 theis 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);
        }
    }
    Producción:

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

Publicación traducida automáticamente

Artículo escrito por Rajput-Ji y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *