Dada una ArrayList con valores duplicados, la tarea es eliminar los valores duplicados de esta ArrayList en Java.
Ejemplos:
Input: List = [1, 10, 2, 2, 10, 3, 3, 3, 4, 5, 5] Output: List = [1, 10, 2, 3, 4, 5] Input: List = ["G", "e", "e", "k", "s"] Output: List = ["G", "e", "k", "s"]
-
Usando iterador
Acercarse:
- Obtenga ArrayList con valores duplicados.
- Cree otra ArrayList.
- Recorra la primera lista de arreglos y almacene la primera aparición de cada elemento en la segunda lista de arreglos usando el método contains().
- La segunda ArrayList contiene los elementos con duplicados eliminados.
A continuación se muestra la implementación del enfoque anterior:
// Java program to remove duplicates from ArrayList
import
java.util.*;
public
class
GFG {
// Function to remove duplicates from an ArrayList
public
static
<T> ArrayList<T> removeDuplicates(ArrayList<T> list)
{
// Create a new ArrayList
ArrayList<T> newList =
new
ArrayList<T>();
// Traverse through the first list
for
(T element : list) {
// If this element is not present in newList
// then add it
if
(!newList.contains(element)) {
newList.add(element);
}
}
// return the new list
return
newList;
}
// Driver code
public
static
void
main(String args[])
{
// Get the ArrayList with duplicate values
ArrayList<Integer>
list =
new
ArrayList<>(
Arrays
.asList(
1
,
10
,
1
,
2
,
2
,
3
,
3
,
10
,
3
,
4
,
5
,
5
));
// Print the Arraylist
System.out.println(
"ArrayList with duplicates: "
+ list);
// Remove duplicates
ArrayList<Integer>
newList = removeDuplicates(list);
// Print the ArrayList with duplicates removed
System.out.println(
"ArrayList with duplicates removed: "
+ newList);
}
}
Producción:ArrayList with duplicates: [1, 10, 1, 2, 2, 3, 3, 10, 3, 4, 5, 5] ArrayList with duplicates removed: [1, 10, 2, 3, 4, 5]
-
Uso de LinkedHashSet
Una mejor manera (tanto por la complejidad del tiempo como por la facilidad de implementación) es eliminar los duplicados de un ArrayList y convertirlo en un Conjunto que no permita duplicados. Por lo tanto, LinkedHashSet es la mejor opción disponible, ya que no permite duplicados y conserva el orden de inserción.
Acercarse:
- Obtenga ArrayList con valores duplicados.
- Cree un LinkedHashSet a partir de este ArrayList. Esto eliminará los duplicados.
- Convierta este LinkedHashSet nuevamente en Arraylist.
- La segunda ArrayList contiene los elementos con duplicados eliminados.
A continuación se muestra la implementación del enfoque anterior:
// Java program to remove duplicates from ArrayList
import
java.util.*;
public
class
GFG {
// Function to remove duplicates from an ArrayList
public
static
<T> ArrayList<T> removeDuplicates(ArrayList<T> list)
{
// Create a new LinkedHashSet
Set<T> set =
new
LinkedHashSet<>();
// Add the elements to set
set.addAll(list);
// Clear the list
list.clear();
// add the elements of set
// with no duplicates to the list
list.addAll(set);
// return the list
return
list;
}
// Driver code
public
static
void
main(String args[])
{
// Get the ArrayList with duplicate values
ArrayList<Integer>
list =
new
ArrayList<>(
Arrays
.asList(
1
,
10
,
1
,
2
,
2
,
3
,
10
,
3
,
3
,
4
,
5
,
5
));
// Print the Arraylist
System.out.println(
"ArrayList with duplicates: "
+ list);
// Remove duplicates
ArrayList<Integer>
newList = removeDuplicates(list);
// Print the ArrayList with duplicates removed
System.out.println(
"ArrayList with duplicates removed: "
+ newList);
}
}
Producción:ArrayList with duplicates: [1, 10, 1, 2, 2, 3, 10, 3, 3, 4, 5, 5] ArrayList with duplicates removed: [1, 10, 2, 3, 4, 5]
-
Usando Java 8 Stream.distinct()
Puede usar el método distinto() de Stream API. El método distinto() devuelve una nueva secuencia sin elementos duplicados en función del resultado devuelto por el método equals(), que se puede utilizar para un procesamiento posterior. El procesamiento real de la canalización de Stream comienza solo después de llamar a métodos de terminal como forEach() o collect().
Acercarse:
- Obtenga ArrayList con valores duplicados.
- Cree una nueva lista a partir de este ArrayList.
- Usando el método Stream().distinct() que devuelve un flujo de objetos distinto.
- convertir este flujo de objetos en Lista
A continuación se muestra la implementación del enfoque anterior:
// Java program to remove duplicates from ArrayList
import
java.util.ArrayList;
import
java.util.Arrays;
import
java.util.List;
import
java.util.stream.Collectors;
// Program to remove duplicates from a List in Java 8
class
GFG
{
public
static
void
main(String[] args)
{
// input list with duplicates
List<Integer> list =
new
ArrayList<>(
Arrays.asList(
1
,
10
,
1
,
2
,
2
,
3
,
10
,
3
,
3
,
4
,
5
,
5
));
// Print the Arraylist
System.out.println(
"ArrayList with duplicates: "
+ list);
// Construct a new list from the set constucted from elements
// of the original list
List<Integer> newList = list.stream()
.distinct()
.collect(Collectors.toList());
// Print the ArrayList with duplicates removed
System.out.println(
"ArrayList with duplicates removed: "
+ newList);
}
}
Producción:ArrayList with duplicates: [1, 10, 1, 2, 2, 3, 10, 3, 3, 4, 5, 5] ArrayList with duplicates removed: [1, 10, 2, 3, 4, 5]
Publicación traducida automáticamente
Artículo escrito por RishabhPrabhu y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA