Monday, January 12, 2015

Defined objects as a key from Linked HashMap in Java Program



How to eliminate duplicate user defined objects as a key from Linked HashMap

package com.java2novice.linkedhashmap;
import java.util.LinkedHashMap;
import java.util.Set;
public class MyDuplicateKeyEx
{
public static void main(String a[])
{
        LinkedHashMap hm = new LinkedHashMap();
        hm.put(new Price("Banana", 20), "Banana");
        hm.put(new Price("Apple", 40), "Apple");
        hm.put(new Price("Orange", 30), "Orange");
        printMap(hm);
        Price key = new Price("Banana", 20);
        System.out.println("Adding duplicate key...");
        hm.put(key, "Grape");
        System.out.println("After adding dulicate key:");
        printMap(hm);
    }
  public static void printMap(LinkedHashMap map)
  {
        Set keys = map.keySet();
        for(Price p:keys)
        {
            System.out.println(p+"==>"+map.get(p));
        }
    }
}

class Price
{
    private String item;
    private int price;
 public Price(String itm, int pr)
{
        this.item = itm;
        this.price = pr;
  }
 public int hashCode()
{
        int hashcode = 0;
        hashcode = price*20;
        hashcode += item.hashCode();
        return hashcode;
    }
  public boolean equals(Object obj)
  {
        if (obj instanceof Price)
         {
            Price pp = (Price) obj;
            return (pp.item.equals(this.item) && pp.price == this.price);
    }
         else
        {
            return false;
        }
    }
public String getItem()
{
        return item;
 }
 public void setItem(String item)
{
        this.item = item;
 }
 public int getPrice()
 {
        return price;
  }
   public void setPrice(int price)
   {
        this.price = price;
    }
   public String toString()
  {
        return "item: "+item+"  price: "+price;
    }
}

How to find user defined objects as a key from Linked HashMap

package com.java2novice.linkedhashmap;
import java.util.LinkedHashMap;
import java.util.Set;
public class MyObjectKeySearch
{
public static void main(String a[])
{
        LinkedHashMap hm = new LinkedHashMap();
        hm.put(new Price("Banana", 20), "Banana");
        hm.put(new Price("Apple", 40), "Apple");
        hm.put(new Price("Orange", 30), "Orange");
        printMap(hm);
        Price key = new Price("Banana", 20);
        System.out.println("Does key available? "+hm.containsKey(key));
  }
 public static void printMap(LinkedHashMap map)
        Set keys = map.keySet();
        for(Price p:keys)
        {
            System.out.println(p+"==>"+map.get(p));
        }
    }
}
class Price
{
     
    private String item;
    private int price;
 public Price(String itm, int pr)
{
        this.item = itm;
        this.price = pr;
  }
 public int hashCode()
{
        System.out.println("In hashcode");
        int hashcode = 0;
        hashcode = price*20;
        hashcode += item.hashCode();
        return hashcode;
    }
  public boolean equals(Object obj)
 {
        System.out.println("In equals");
        if (obj instanceof Price)
        {
            Price pp = (Price) obj;
            return (pp.item.equals(this.item) && pp.price == this.price);
        }
        else
        {
            return false;
        }
    }
public String getItem()
{
        return item;
 }
public void setItem(String item)
{
        this.item = item;
 }
public int getPrice()
{
        return price;
    }
  public void setPrice(int price)
  {
        this.price = price;
    }
   public String toString()
   {
        return "item: "+item+"  price: "+price;
    }
}

No comments:

Post a Comment