You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

171 lines
5.3 KiB
Java

import java.util.Collection;
import java.util.HashMap;
import java.util.IdentityHashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Set;
public class IdentityHashMapImpl<K, V>
{
private IdentityHashMap<K, V> identityHashMap;
/**
* Constructs a new, empty identity hash map with a default expected maximum
* size (21).
**/
public IdentityHashMapImpl()
{
identityHashMap = new IdentityHashMap<K, V>();
}
/** Constructs a new, empty map with the specified expected maximum size. **/
public IdentityHashMapImpl(int expectedMaxSize)
{
identityHashMap = new IdentityHashMap<>(expectedMaxSize);
}
/**
* Constructs a new identity hash map containing the keys-value mappings in
* the specified map.
**/
public IdentityHashMapImpl(Map<? extends K, ? extends V> m)
{
identityHashMap = new IdentityHashMap<>(m);
}
/** Removes all of the mappings from this map. **/
public void clear()
{
identityHashMap.clear();
}
/** Returns true if this map contains a mapping for the specified key. **/
public boolean containsKey(Object key)
{
return identityHashMap.containsKey(key);
}
/** Returns true if this map maps one or more keys to the specified value. **/
public boolean containsValue(Object value)
{
return identityHashMap.containsValue(value);
}
/** Returns a Set view of the mappings contained in this map. **/
public Set<Map.Entry<K, V>> entrySet()
{
return identityHashMap.entrySet();
}
/** Returns a Set view of the keys contained in this map. **/
public Set<K> keySet()
{
return identityHashMap.keySet();
}
/**
* 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 identityHashMap.get(key);
}
/** Associates the specified value with the specified key in this map. **/
public V put(K key, V value)
{
return identityHashMap.put(key, value);
}
/** Copies all of the mappings from the specified map to this map. **/
public void putAll(Map<? extends K, ? extends V> map)
{
identityHashMap.putAll(map);
}
/** Removes the mapping for this key from this TreeMap if present. **/
public V remove(Object key)
{
return identityHashMap.remove(key);
}
/** Returns the number of key-value mappings in this map. **/
public int size()
{
return identityHashMap.size();
}
/** Returns a Collection view of the values contained in this map. **/
public Collection<V> values()
{
return identityHashMap.values();
}
/** Returns true if this map contains no key-value mappings. **/
public boolean isEmpty()
{
return identityHashMap.isEmpty();
}
public static void main(String... arg)
{
IdentityHashMapImpl<Integer, Integer> identityhashMap = new IdentityHashMapImpl<Integer, Integer>();
identityhashMap.put(1, 100);
identityhashMap.put(2, 200);
identityhashMap.put(3, 300);
Map<Integer, Integer> anotherMap = new HashMap<Integer, Integer>();
anotherMap.put(4, 400);
anotherMap.put(5, 500);
identityhashMap.putAll(anotherMap);
System.out.println("the key set of the identityhashmap is ");
Set<Integer> keySet = identityhashMap.keySet();
Iterator<Integer> itr = keySet.iterator();
while (itr.hasNext())
{
System.out.print(itr.next() + "\t");
}
System.out.println();
System.out.println("the values of the identityhashmap is ");
Collection<Integer> collectionValues = identityhashMap.values();
itr = collectionValues.iterator();
while (itr.hasNext())
{
System.out.print(itr.next() + "\t");
}
System.out.println();
System.out.println("the entry set of the identityhashmap is ");
Iterator<Entry<Integer, Integer>> eitr;
Set<Entry<Integer, Integer>> entrySet = identityhashMap.entrySet();
eitr = entrySet.iterator();
while (eitr.hasNext())
{
System.out.println(eitr.next() + "\t");
}
System.out.println("the identityhashmap contains Key 3 :" + identityhashMap.containsKey(3));
System.out.println("the identityhashmap contains Value 600 :" + identityhashMap.containsValue(600));
System.out.println("the size of the identityhashmap is " + identityhashMap.size());
identityhashMap.clear();
if (identityhashMap.isEmpty())
System.out.println("the identityhashmap is empty");
else
System.out.println("the identityhashmap is not empty");
}
}
/*
the key set of the identityhashmap is
1 4 3 5 2
the values of the identityhashmap is
100 400 300 500 200
the entry set of the identityhashmap is
1=100
4=400
3=300
5=500
2=200
the identityhashmap contains Key 3 :true
the identityhashmap contains Value 600 :false
the size of the identityhashmap is 5
the identityhashmap is empty