Java Collection Tutorial - Java IdentityHashMap(Map <? extends K ,? extends V > m) Constructor








Syntax

IdentityHashMap(Map <? extends K ,? extends V > m) constructor from IdentityHashMap has the following syntax.

public IdentityHashMap(Map <? extends K ,? extends V> m)

Example

In the following code shows how to use IdentityHashMap.IdentityHashMap(Map <? extends K ,? extends V > m) constructor.

 //from  www  . jav a  2  s.  co m
import java.util.HashMap;
import java.util.IdentityHashMap;
import java.util.Map;

public class Main {
  public static void main(String[] args) {
    Map<Employee, String> map2 = new HashMap<Employee, String>();
    Employee e2 = new Employee("J", 26);
    map2.put(e2, "MGMT");
    System.out.println(map2);
    e2.setAge(27);
    System.out.println(map2);
    System.out.println(map2.containsKey(e2));//false

    Map<Employee, String> map1 = new IdentityHashMap<Employee, String>(map2);
    
    System.out.println(map1);
  }
}

class Employee {
  private String name;
  private int age;

  Employee(String name, int age) {
    this.name = name;
    this.age = age;
  }

  @Override
  public boolean equals(Object o) {
    if (!(o instanceof Employee))
      return false;
    Employee e = (Employee) o;
    return e.name.equals(name) && e.age == age;
  }

  @Override
  public int hashCode() {
    int hashCode = 19;
    hashCode = hashCode * 31 + name.hashCode();
    hashCode = hashCode * 31 + age;
    return hashCode;
  }

  void setAge(int age) {
    this.age = age;
  }

  void setName(String name) {
    this.name = name;
  }

  @Override
  public String toString() {
    return name + " " + age;
  }
}
  

The code above generates the following result.