import java.util.Collection; import java.util.HashMap; import java.util.Iterator; import java.util.Map; import java.util.Map.Entry; import java.util.Set; public class HashMapImpl { private HashMap hashMap; /* * Constructs an empty HashMap with the default initial capacity (16) and * the default load factor (0.75). */ public HashMapImpl() { hashMap = new HashMap(); } /* * Constructs an empty HashMap with the specified initial capacity and the * default load factor (0.75). */ public HashMapImpl(int initialCapacity) { hashMap = new HashMap(initialCapacity); } /* * Constructs an empty HashMap with the specified initial capacity and load * factor. */ public HashMapImpl(int initialCapacity, float loadFactor) { hashMap = new HashMap(initialCapacity, loadFactor); } /* Constructs a new HashMap with the same mappings as the specified Map. */ public HashMapImpl(Map m) { hashMap = new HashMap(m); } /* Removes all of the mappings from this map. */ public void clear() { hashMap.clear(); } /* * Returns a shallow copy of this HashMap instance: the keys and values * themselves are not cloned. */ public Object clone() { return hashMap.clone(); } /* Returns true if this map contains a mapping for the specified key. */ public boolean containsKey(Object key) { return hashMap.containsKey(key); } /* Returns true if this map maps one or more keys to the specified value. */ public boolean containsValue(Object value) { return hashMap.containsValue(value); } /* Returns a Set view of the mappings contained in this map. */ public Set> entrySet() { return hashMap.entrySet(); } /* * Returns the value to which the specified key is mapped, or null if this * map contains no mapping for the key. */ public V get(Object key) { return hashMap.get(key); } /* Returns true if this map contains no key-value mappings. */ public boolean isEmpty() { return hashMap.isEmpty(); } /* Returns a Set view of the keys contained in this map. */ public Set keySet() { return hashMap.keySet(); } /* Associates the specified value with the specified key in this map. */ public V put(K key, V value) { return hashMap.put(key, value); } /* Copies all of the mappings from the specified map to this map. */ public void putAll(Map m) { hashMap.putAll(m); } /* Removes the mapping for the specified key from this map if present. */ public V remove(Object key) { return hashMap.remove(key); } /* Returns the number of key-value mappings in this map. */ public int size() { return hashMap.size(); } /* Returns a Collection view of the values contained in this map. */ public Collection values() { return hashMap.values(); } public static void main(String... arg) { HashMapImpl hashMap = new HashMapImpl(); hashMap.put(1, 100); hashMap.put(2, 200); hashMap.put(3, 300); Map anotherMap = new HashMap(); anotherMap.put(4, 400); anotherMap.put(5, 500); hashMap.putAll(anotherMap); System.out.println("the key set of the map is "); Set keySet = hashMap.keySet(); Iterator itr = keySet.iterator(); while (itr.hasNext()) { System.out.print(itr.next() + "\t"); } System.out.println(); System.out.println("the values of the map is "); Collection collectionValues = hashMap.values(); itr = collectionValues.iterator(); while (itr.hasNext()) { System.out.print(itr.next() + "\t"); } System.out.println(); System.out.println("the entry set of the map is "); Iterator> eitr; Set> entrySet = hashMap.entrySet(); eitr = entrySet.iterator(); while (eitr.hasNext()) { System.out.println(eitr.next() + "\t"); } System.out.println("the hash Map contains Key 3 :" + hashMap.containsKey(3)); System.out.println("the hash Map contains Value 600 :" + hashMap.containsValue(600)); System.out.println("the size of the hash Map is " + hashMap.size()); hashMap.clear(); if (hashMap.isEmpty()) System.out.println("the hash Map is empty"); else System.out.println("the hash Map is not empty"); } } /* the key set of the map is 1 2 3 4 5 the values of the map is 100 200 300 400 500 the entry set of the map is 1=100 2=200 3=300 4=400 5=500 the hash Map contains Key 3 :true the hash Map contains Value 600 :false the size of the hash Map is 5 the hash Map is empty