java.util.WeakHashMap Class

advertisement
http://www.hudatutorials.com
Download link: http://www.hudatutorials.com/ht/java/util/weakhashmap.html
java.util.WeakHashMap Class
The WeakHashMap functions identically to the HashMap. If the Java memory manager no
longer has a strong reference to the object specified as a key, then the entry in the map
will be removed. Both null values and the null key are supported.
WeakHashMap is not for caching. The idea is, suppose you have a bunch of objects of a
certain class that you can't extend, but you want to associate some other piece of
information with each object. You can use a Map, with the main object as the key and
the extra info as the value. Using a WeakHashMap for this will make sure that your Map
won't cause a memory leak, because it won't hold a strong reference to the main (key)
object; this will allow the object to be garbage collected when it's no longer needed.
When the key is garbage collected, the value will soon be garbage collected too, though
not immediately.
WeakHashMap class has following constructors.
WeakHashMap()
Constructs a new, empty WeakHashMap with the default initial capacity (16) and load
factor (0.75).
WeakHashMap(int initialCapacity)
Constructs a new, empty WeakHashMap with the given initial capacity and the default
load factor (0.75).
WeakHashMap(int initialCapacity, float loadFactor)
Constructs a new, empty WeakHashMap with the given initial capacity and the given load
factor.
WeakHashMap(Map<? extends K,? extends V> m)
Constructs a new WeakHashMap with the same mappings as the specified map.
/* java.util.WeakHashMap class Example */
/* Save with file name WeakHashMapExample.java */
import java.util.WeakHashMap;
import java.util.Enumeration;
public class WeakHashMapExample
{
public static void main(String args[])
{
//java.util.WeakHashMap DECLARATION
WeakHashMap<String,Integer> h;
//java.util.WeakHashMap OBJECT CREATION
//USING DEFAULT CONSTRUCTOR
h = new WeakHashMap<String,Integer>();
// Create a key for the map, keep the strong reference
String strongReference = new String("ONE");
//ADD KEY AND VALUE
1
http://www.hudatutorials.com
Download link: http://www.hudatutorials.com/ht/java/util/weakhashmap.html
h.put(strongReference, new Integer(1));
h.put("TWO", new Integer(2));
h.put("THREE", new Integer(3));
//WeakHashMap OUTPUT BEFORE null the strongReference
System.out.println(h);
strongReference = null;
//JAVA GARBAGE COLLECTION
System.gc();
//WeakHashMap OUTPUT AFTER null the strongReference
//AFTER null THE KEY THE ELEMENT IS REMOVED FROM Map
System.out.println(h);
}
}
/* java.util.WeakHashMap class Example 2 */
/* Save with file name WeakHashMapExample2.java */
import
import
import
import
import
java.util.WeakHashMap;
java.util.Iterator;
java.util.Set;
java.util.Collection;
java.util.Iterator;
public class WeakHashMapExample2
{
public static void main(String args[])
{
//java.util.WeakHashMap DECLARATION
WeakHashMap<String,Integer> h;
//java.util.WeakHashMap OBJECT CREATION
//USING DEFAULT CONSTRUCTOR
h = new WeakHashMap<String,Integer>();
//ADD KEY AND VALUE
h.put("ONE", new Integer(1));
h.put("TWO", new Integer(2));
h.put("THREE", new Integer(3));
//ALLOW null KEY AND VALUE
h.put(null,null);
//WeakHashMap KEYS OUTPUT
Set s = h.keySet();
Iterator itr = s.iterator();
int i=1;
while(itr.hasNext())
{
System.out.println("Key " + i++ + " : " + itr.next());
}
//WeakHashMap VALUES OUTPUT
Collection c = h.values();
2
http://www.hudatutorials.com
Download link: http://www.hudatutorials.com/ht/java/util/weakhashmap.html
Iterator values = c.iterator();
int j=1;
while(values.hasNext())
{
System.out.println("Value " + j++ + " : " + values.next());
}
}
}
/* java.util.WeakHashMap class Example 3 */
/* Save with file name WeakHashMapExample3.java */
import
import
import
import
import
import
java.util.WeakHashMap;
java.util.Map;
java.util.Iterator;
java.util.Set;
java.util.Collection;
java.util.Iterator;
public class WeakHashMapExample3
{
public static void main(String args[])
{
//java.util.WeakHashMap DECLARATION
WeakHashMap<String,Integer> h;
//java.util.WeakHashMap OBJECT CREATION
//USING DEFAULT CONSTRUCTOR
h = new WeakHashMap<String,Integer>();
//ADD KEY AND VALUE
h.put("ONE", new Integer(1));
h.put("TWO", new Integer(2));
h.put("THREE", new Integer(3));
//ALLOW null KEY AND VALUE
h.put(null,null);
//WeakHashMap KEYS OUTPUT
Set s = h.entrySet();
Iterator itr = s.iterator();
int i=1;
while(itr.hasNext())
{
//Map.Entry IS INNER INTERFACE OF Map INTERFACE
Map.Entry entry = (Map.Entry) itr.next();
System.out.println(entry.getKey()+" "+entry.getValue());
}
}
}
/* java.util.WeakHashMap class Example 4*/
/* Save with file name WeakHashMapExample4.java */
import java.util.WeakHashMap;
import java.util.Enumeration;
3
http://www.hudatutorials.com
Download link: http://www.hudatutorials.com/ht/java/util/weakhashmap.html
public class WeakHashMapExample4
{
public static void main(String args[])
{
//java.util.WeakHashMap DECLARATION
WeakHashMap<String,Integer> h;
//java.util.WeakHashMap OBJECT CREATION
//USING DEFAULT CONSTRUCTOR
h = new WeakHashMap<String,Integer>();
//ADD AN ELEMENTS
h.put("ONE", new Integer(1));
h.put("TWO", new Integer(2));
h.put("THREE", new Integer(3));
System.out.println("isEmpty : " + h.isEmpty());
//RETURNS THE NUMBER OF KEYS IN THIS WeakHashMap
System.out.println("noof Keys : " + h.size());
System.out.println("Key ONE value : " + h.get("ONE"));
System.out.println("Contains key THREE : " + h.containsKey("THREE"));
System.out.println("Contains value 2 : " + h.containsValue(new Integer(2)));
}
}
4
Download