¿Cómo mantener el orden de inserción al obtener valores únicos de ArrayList en Java?

ArrayList es parte del marco de la colección y está presente en el paquete java.util. Nos proporciona arreglos dinámicos en Java. Sin embargo, puede ser más lento que las arrays estándar, pero puede ser útil en programas donde se necesita mucha manipulación en la array. Esta clase se encuentra en el paquete java.util .

Si queremos mantener el orden de inserción de los elementos, se supone que debemos usar LinkedHashSet . LinkedHashSet mantiene el orden en que se insertan los elementos.

Ejemplo 1:

Java

// Java program to Maintain Insertion Order While
// Getting Unique Values from ArrayList
  
import java.util.*;
  
class GFG {
    public static void main(String[] args)
    {
  
        // Creating an arrayList
        ArrayList<Integer> arrayList = new ArrayList<>();
  
        // adding elements to arrayList
        arrayList.add(100);
        arrayList.add(200);
        arrayList.add(100);
        arrayList.add(500);
        arrayList.add(200);
        arrayList.add(300);
        arrayList.add(200);
        arrayList.add(600);
  
        // creating an LinkedHashSet and
        // adding arrayList elements to linkedHashSet
        LinkedHashSet<Integer> set
            = new LinkedHashSet<>(arrayList);
  
        System.out.println(
            "Unique values in inserted order");
        System.out.println(set);
    }
}
Producción

Unique values in inserted order
[100, 200, 500, 300, 600]

Ejemplo 2:

  • En este ejemplo, en lugar de usar una clase contenedora, usaremos una clase definida por el usuario y mantendremos el orden de inserción mientras obtenemos valores únicos de ArrayList.
  • Dado que estamos utilizando una clase definida por el usuario, se supone que debemos anular el método hashCode y el método equals para que nuestro LinkedHashSet pueda identificar elementos similares; de lo contrario, nuestro LinkedHashSet considerará cada elemento como un elemento único.

Java

// Java program to Maintain Insertion Order While
// Getting Unique Values from ArrayList
  
import java.util.*;
class friendsDetail {
  
    // class field
    private String name;
    private String nickName;
  
    // parameterised constructor
    public friendsDetail(String name, String nickName)
    {
        this.name = name;
        this.nickName = nickName;
    }
  
    // getter for name
    public String getName() { return name; }
  
    // setter for name
    public void setName(String name) { this.name = name; }
  
    // getter for nickname
    public String getnickName() { return nickName; }
  
    // setter for nickname
    public void setNickName(int id)
    {
        this.nickName = nickName;
    }
  
    @Override public boolean equals(Object o)
    {
  
        if (this == o)
            return true;
  
        if (!(o instanceof friendsDetail))
            return false;
  
        friendsDetail that = (friendsDetail)o;
  
        return Objects.equals(getName(), that.getName())
            && Objects.equals(nickName, that.nickName);
    }
  
    @Override public int hashCode()
    {
        return Objects.hash(getName(), nickName);
    }
  
    // overriding toString method
    public String toString()
    {
        // return super.toString();
        return "(" + this.getName() + ":"
            + this.getnickName() + ")";
    }
}
class GFG {
    public static void main(String[] args)
    {
  
        ArrayList<friendsDetail> originalArrayList
            = new ArrayList<>();
  
        System.out.println("Our ArrayList\n");
  
        originalArrayList.add(
            new friendsDetail("Raushan", "Chamgader"));
        originalArrayList.add(
            new friendsDetail("Yashdeep", "Dopa"));
        originalArrayList.add(
            new friendsDetail("Shishya", "Gorilla"));
        originalArrayList.add(
            new friendsDetail("Sonika", "Chipkali"));
        originalArrayList.add(
            new friendsDetail("Himanshu", "Lalten"));
        originalArrayList.add(
            new friendsDetail("Sarthak", "Nagin"));
        originalArrayList.add(
            new friendsDetail("Tsering", "Battak"));
        originalArrayList.add(
            new friendsDetail("Abhishek", "Liquid"));
        originalArrayList.add(
            new friendsDetail("Shishya", "Gorilla"));
        originalArrayList.add(
            new friendsDetail("Suraj", "Bhindi"));
        originalArrayList.add(
            new friendsDetail("Sonika", "Chipkali"));
        originalArrayList.add(
            new friendsDetail("Himanshu", "Lalten"));
        originalArrayList.add(
            new friendsDetail("Sarthak", "Nagin"));
  
        // Displaying output using enhanced for loop
        for (friendsDetail friend : originalArrayList) {
            System.out.println(friend);
        }
  
        LinkedHashSet<friendsDetail> linkedHashSet
            = new LinkedHashSet<>(originalArrayList);
  
        System.out.println(
            "\nUnique elements in inserted order\n");
  
        // Displaying output using enhanced for loop
        for (friendsDetail friend : linkedHashSet) {
            System.out.println(friend);
        }
    }
}
Producción

Our ArrayList

(Raushan:Chamgader)
(Yashdeep:Dopa)
(Shishya:Gorilla)
(Sonika:Chipkali)
(Himanshu:Lalten)
(Sarthak:Nagin)
(Tsering:Battak)
(Abhishek:Liquid)
(Shishya:Gorilla)
(Suraj:Bhindi)
(Sonika:Chipkali)
(Himanshu:Lalten)
(Sarthak:Nagin)

Unique elements in inserted order

(Raushan:Chamgader)
(Yashdeep:Dopa)
(Shishya:Gorilla)
(Sonika:Chipkali)
(Himanshu:Lalten)
(Sarthak:Nagin)
(Tsering:Battak)
(Abhishek:Liquid)
(Suraj:Bhindi)

Publicación traducida automáticamente

Artículo escrito por le0 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 *