Open In App

How to Eliminate Duplicate User Defined Objects as a Key from Java LinkedHashMap?

Last Updated : 20 Feb, 2023
Improve
Improve
Like Article
Like
Save
Share
Report

Duplicate user-defined objects as a key from Java LinkedHashMap can be removed and achieved by implementing equals and hashcode methods at the user-defined objects.

Example:

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

Syntax:

equals() Method:

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.

hashCode() Method:

public int hashCode()

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

Below is the implementation of the problem statement:

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());
        }
    }
}


Output

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

Time Complexity: O(1)

Auxiliary Space: O(1)



Like Article
Suggest improvement
Previous
Next
Share your thoughts in the comments

Similar Reads