CodesJava

Easy learning with example program codes

how to eliminate duplicate keys user defined objects with Hashtable?


Hashtable:

Hashtable extends Dictionary class and implements Map interface. It contains elements in key-value pair. It not allowed duplicate key. It is synchronized. It can’t contain null key or value. It uses hashcode() method for finding the position of the elements.

To iterate through hashtable in java, first we have to get all keys as set object and then fetch each element using key.

Example:

package com.codesjava;
 
import java.util.Hashtable;
import java.util.Set;
 
class Employee{    
    private String name;
    private int salary;
    private int id;
 
    public Employee(int id, String name, int salary){
    	this.id = id;
        this.name = name;
        this.salary = salary;
    }
 
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public int getSalary() {
        return salary;
    }
    public void setSalary(int salary) {
        this.salary = salary;
    }
	public int getId() {
		return id;
	}
	public void setId(int id) {
		this.id = id;
	}
	public String toString(){
        return "Id: "+this.id+", Name: "+this.name+", Salary: "+this.salary;
    }
 
	@Override
	public int hashCode() {
	    System.out.println("In hashcode method");
	    return this.getId();
	}
 
	@Override
	public boolean equals(Object obj) {
		Employee e = null;
	    if(obj instanceof Employee){
	        e = (Employee) obj;
	    }
	    System.out.println("In equals method");
	    if(this.getId() == e.getId()){
	        return true;
	    } else {
	        return false;
	    }  
	}
}
 
public class Test {
  public static void main(String args[]){
	Hashtable<Employee,String> hashtable = new Hashtable<Employee, String>();
	hashtable.put(new Employee(1,"Jai",50000), "JAI");
	hashtable.put(new Employee(2,"Mahesh",80000), "MAHESH");
	hashtable.put(new Employee(3,"Vishal",60000), "VISHAL");
	hashtable.put(new Employee(4,"Hemant",64000), "HEMANT");
	System.out.println("Adding duplicate entry.");
	hashtable.put(new Employee(3,"Vishal",60000), "VISHAL");
	Set<Employee> keys = hashtable.keySet();
        for(Employee key:keys){
            System.out.println(key+" - "+hashtable.get(key));
        }
        System.out.println("Duplicate removed.");
  }
}

Output

In hashcode method
In hashcode method
In hashcode method
In hashcode method
Adding duplicate entry.
In hashcode method
In equals method
In hashcode method
In equals method
Id: 4, Name: Hemant, Salary: 64000 - HEMANT
In hashcode method
In equals method
Id: 3, Name: Vishal, Salary: 60000 - VISHAL
In hashcode method
In equals method
Id: 2, Name: Mahesh, Salary: 80000 - MAHESH
In hashcode method
In equals method
Id: 1, Name: Jai, Salary: 50000 - JAI
Duplicate removed.
Sign Up/ Sign In
Ask a Question


Copyright © 2018 CodesJava DMCA.com Protection Status SiteMap Reference: Java Wiki