¿Cómo eliminar objetos duplicados definidos por el usuario como una clave de Java LinkedHashMap?

Los objetos duplicados definidos por el usuario como una clave de Java LinkedHashMap se pueden eliminar y lograr mediante la implementación de métodos equals y hashcode en los objetos definidos por el usuario.

Ejemplo:

Input : LinkedHashMap = [{[Apple, 40], Kashmir}, {[Grapes, 80], Nashik}]
    Duplicate key = {[Grapes, 80], Delhi}
Output: LinkedHashMap = [{[Apple, 40], Kashmir}, {[Grapes, 80], Delhi}]

Sintaxis:

igual() Método:

public boolean equals  (Object obj)

// This method checks if some other Object
// passed to it as an argument is equal to 
// the Object on which it is invoked.

Método hashCode():

public int hashCode()

// This method returns the hash code value 
// for the object on which this method is invoked.

A continuación se muestra la implementación del enunciado del problema:

Java

// Java Program to eliminate duplicate user defined
// objects as a key from Java LinkedHashMap
import java.util.*;
class Employee {
    private String name;
    private int id;
    // Constructor
    public Employee(String name, int id)
    {
        this.name = name;
        this.id = id;
    }
  
    // HashCode Method
    public int hashCode()
    {
        System.out.println("In hashcode method");
        int hashcode = 0;
        return hashcode;
    }
  
    // Equals Method
    public boolean equals(Object obj)
    {
        System.out.println("In equals method");
        if (obj instanceof Employee) {
            Employee emp = (Employee)obj;
            return (emp.name.equals(this.name)
                    && emp.id == this.id);
        }
        else {
            return false;
        }
    }
  
    // Getters and Setters
    public String getName() { return name; }
    public void setName(String name) { this.name = name; }
    public int getId() { return id; }
    public void setId(int id) { this.id = id; }
    public String toString()
    {
        return "Employee Id: " + id + "  Name: " + name;
    }
}
  
// Driver code
public class Duplicate_Value {
    public static void main(String a[])
    {
  
        // LinkedHashMap initialization
        LinkedHashMap<Employee, Integer> lhm
            = new LinkedHashMap<Employee, Integer>();
  
        // Adding entries in LinkedHashMap
        lhm.put(new Employee("John", 1020), 1);
        lhm.put(new Employee("Ravi", 1040), 2);
        lhm.put(new Employee("Jaya", 1030), 3);
  
        // Print LinkedHashMap
        for (Map.Entry<Employee, Integer> entry :
             lhm.entrySet()) {
            System.out.println(entry.getKey() + "=>"
                               + entry.getValue());
        }
  
        // Create duplicate entry
        Employee duplicate = new Employee("John", 1020);
        System.out.println("Inserting duplicate record...");
        // Add duplicate entry
        lhm.put(duplicate, 4);
  
        System.out.println("After insertion:");
        for (Map.Entry<Employee, Integer> entry :
             lhm.entrySet()) {
            System.out.println(entry.getKey() + "=>"
                               + entry.getValue());
        }
    }
}
Producción

In hashcode method
In hashcode method
In equals method
In hashcode method
In equals method
Employee Id: 1020  Name: John
Inserting duplicate record...
In hashcode method
In equals method
After insertion:
Employee Id: 1020  Name: John

Complejidad de tiempo: O(1)

Publicación traducida automáticamente

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