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]
- Usando el método Collections.retainAll()
Sintaxis:
Collections1.retainAll(Collections2) This method keeps only the common elements of both Collection in Collection1.
Acercarse:
- Obtenga las dos ArrayLists.
- 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.
- 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]
- 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:
- Primero cree dos ArrayList y agregue valores de lista.
- Convierta ArrayList en Stream usando el método stream().
- Establezca la condición del filtro para que sea distinta usando el método contains().
- Recopile los valores filtrados como Lista usando el método collect(). Esta lista devolverá un elemento común en ambas listas.
- 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]
- Enfoque ingenuo:
- Primero cree dos ArrayList y agregue valores de lista.
- Cree una ArrayList temporal para contener elementos comunes.
- Recorra la lista1 y verifique si ese elemento está presente en la lista2 usando el método ArrayList.contains().
- Si lo encuentra, agréguelo a la lista3
- 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]