ArrayList en Java no evita que la lista tenga valores duplicados. Pero hay formas si desea obtener valores únicos de ArrayList y cada forma se explica con un ejemplo.
Método 1 (usando el método distinto() de Stream API): para Java 8, puede usar Java 8 Stream API. Para obtener valores distintos, el método distinto() es una operación intermedia que también filtra el flujo para pasar a la siguiente operación. Java Stream collect() se utiliza para recopilar los elementos de flujo en una colección (en este caso, una lista).
Sintaxis:
Stream<T> distinct()
Tipo de retorno : Stream es una interfaz y la función. Devuelve una secuencia que consta de elementos distintos.
Java
// Java program to demonstrate // how to Get Unique Values from ArrayList import java.util.*; import java.util.stream.Collectors; public class Main { public static void main(String[] args) { // Create ArrayList of Integers ArrayList<Integer> Numbers = new ArrayList<Integer>(); // add elements to ArrayList Numbers.add(1); Numbers.add(2); Numbers.add(1); Numbers.add(4); Numbers.add(2); List<Integer> UniqueNumbers = Numbers.stream().distinct().collect( Collectors.toList()); System.out.println("Unique Values of ArrayList"); // iterate through List for (int i = 0; i < UniqueNumbers.size(); ++i) { System.out.println(UniqueNumbers.get(i)); } } }
Unique Values of ArrayList 1 2 4
Método 2 (usando HashSet): se puede convertir ArrayList a HashSet , que no permite valores duplicados. Para la conversión, use el constructor de la clase HashSet que acepta Collection como argumento.
Java
// Java program to demonstrate // how to Get Unique Values from ArrayList import java.util.ArrayList; import java.util.HashSet; public class Main { public static void main(String[] args) { // Create ArrayList of Integer ArrayList<Integer> Numbers = new ArrayList<Integer>(); // add elements to ArrayList Numbers.add(1); Numbers.add(2); Numbers.add(1); Numbers.add(4); Numbers.add(2); /*Converting List to HashSet using constructor. */ HashSet<Integer> hashSetNumbers = new HashSet<Integer>(Numbers); System.out.println("Unique Values of ArrayList"); // iterate through HashSet for (Integer strNumber : hashSetNumbers) System.out.println(strNumber); } }
Unique Values of ArrayList 1 2 4
Mantener el orden sin inserción de elementos duplicados en ArrayList.
LinkedHashSet es una versión ordenada de HashSet que mantiene una Lista doblemente vinculada en todos los elementos. Recorramos los elementos en el orden en que fueron insertados. A continuación se muestra el código que mantiene el orden de inserción y no permite elementos duplicados.
Java
// Maintaining order with no duplicate elements insertion in // the ArrayList. import java.util.*; public class Main { public static void main(String[] args) { // Using LinkedHashSet we can prevent // insertion of duplicate elements // as it implements the Set interface LinkedHashSet<Integer> UniqueList = new LinkedHashSet<Integer>(); // Adding elements to LinkedHashSet UniqueList.add(1); UniqueList.add(2); UniqueList.add(3); UniqueList.add(3); // duplicate 3 wont be inserted UniqueList.add(2); // duplicate 2 wont be inserted // Converting LinkedHashSet to List List<Integer> ls = new ArrayList<Integer>(UniqueList); // Printing list System.out.println(ls); } }
[1, 2, 3]
Publicación traducida automáticamente
Artículo escrito por nikitadabral30 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA