¿Cómo obtener valores únicos de ArrayList usando Java 8?

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

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

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

[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

Deja una respuesta

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