cz.cuni.amis.utils.maps
Class WeakHashTriMap<PRIMARY_KEY,SECONDARY_KEY,TERTIARY_KEY,ITEM>

java.lang.Object
  extended by java.util.AbstractMap<K,V>
      extended by java.util.WeakHashMap<PRIMARY_KEY,java.util.Map<SECONDARY_KEY,java.util.Map<TERTIARY_KEY,ITEM>>>
          extended by cz.cuni.amis.utils.maps.WeakHashTriMap<PRIMARY_KEY,SECONDARY_KEY,TERTIARY_KEY,ITEM>
Type Parameters:
PRIMARY_KEY -
SECONDARY_KEY -
TERTIARY_KEY -
ITEM -
All Implemented Interfaces:
java.util.Map<PRIMARY_KEY,java.util.Map<SECONDARY_KEY,java.util.Map<TERTIARY_KEY,ITEM>>>

public class WeakHashTriMap<PRIMARY_KEY,SECONDARY_KEY,TERTIARY_KEY,ITEM>
extends java.util.WeakHashMap<PRIMARY_KEY,java.util.Map<SECONDARY_KEY,java.util.Map<TERTIARY_KEY,ITEM>>>

Three-level hash map, where the PRIMARY_KEY maps are implemented using WeakHashMap. This means, that the PRIMARY_KEY maps, may be garbage collected unless there is a direct reference to the PRIMARY_KEY.


Nested Class Summary
 
Nested classes/interfaces inherited from class java.util.AbstractMap
java.util.AbstractMap.SimpleEntry<K,V>, java.util.AbstractMap.SimpleImmutableEntry<K,V>
 
Constructor Summary
WeakHashTriMap()
          Creates a WeakHashTriMap with default loadFactor(0.75) and default starting capacities (16,16,16)
WeakHashTriMap(int primaryCapacity, int secondaryCapacity, int tertiaryCapacity)
          Creates a new WeakHashTriMap with the default loadFactor (0.75) for all levels and the provided starting capacties for different levels.
 
Method Summary
 java.util.Map<SECONDARY_KEY,java.util.Map<TERTIARY_KEY,ITEM>> get(java.lang.Object primaryKey)
          Returns a HashMap> Never returns null, if the map under primary key doesn't exist, an empty one is added and returned.
 java.util.Map<TERTIARY_KEY,ITEM> get(PRIMARY_KEY primaryKey, SECONDARY_KEY secondaryKey)
          Returns the requested map, never returns null.
 ITEM get(PRIMARY_KEY primaryKey, SECONDARY_KEY secondaryKey, TERTIARY_KEY tertiaryKey)
          Returns item specified, returns null if item does not appear in the map.
 void put(PRIMARY_KEY primaryKey, SECONDARY_KEY secondaryKey, TERTIARY_KEY tertiaryKey, ITEM item)
          Puts the item into the map.
 java.util.Map<SECONDARY_KEY,java.util.Map<TERTIARY_KEY,ITEM>> remove(java.lang.Object primaryKey)
          Removes the requested map.
 java.util.Map<TERTIARY_KEY,ITEM> remove(PRIMARY_KEY primaryKey, SECONDARY_KEY secondaryKey)
          removes the map under primary and secondary key, if the map does not exist, the data structure is not changed and a new map is returned.
 ITEM remove(PRIMARY_KEY primaryKey, SECONDARY_KEY secondaryKey, TERTIARY_KEY tertiaryKey)
          Returns the item under specified keys and removes it from the map, returns null if item is not present in the map.
 
Methods inherited from class java.util.WeakHashMap
clear, containsKey, containsValue, entrySet, isEmpty, keySet, put, putAll, size, values
 
Methods inherited from class java.util.AbstractMap
clone, equals, hashCode, toString
 
Methods inherited from class java.lang.Object
finalize, getClass, notify, notifyAll, wait, wait, wait
 
Methods inherited from interface java.util.Map
equals, hashCode
 

Constructor Detail

WeakHashTriMap

public WeakHashTriMap()
Creates a WeakHashTriMap with default loadFactor(0.75) and default starting capacities (16,16,16)


WeakHashTriMap

public WeakHashTriMap(int primaryCapacity,
                      int secondaryCapacity,
                      int tertiaryCapacity)
Creates a new WeakHashTriMap with the default loadFactor (0.75) for all levels and the provided starting capacties for different levels.

Parameters:
primaryCapacity -
secondaryCapacity -
tertiaryCapacity -
Method Detail

get

public java.util.Map<SECONDARY_KEY,java.util.Map<TERTIARY_KEY,ITEM>> get(java.lang.Object primaryKey)
Returns a HashMap> Never returns null, if the map under primary key doesn't exist, an empty one is added and returned.

Specified by:
get in interface java.util.Map<PRIMARY_KEY,java.util.Map<SECONDARY_KEY,java.util.Map<TERTIARY_KEY,ITEM>>>
Overrides:
get in class java.util.WeakHashMap<PRIMARY_KEY,java.util.Map<SECONDARY_KEY,java.util.Map<TERTIARY_KEY,ITEM>>>
Parameters:
primaryKey -
Returns:

get

public java.util.Map<TERTIARY_KEY,ITEM> get(PRIMARY_KEY primaryKey,
                                            SECONDARY_KEY secondaryKey)
Returns the requested map, never returns null. If the map does not exist an empty map is created and returned.

Parameters:
primaryKey -
secondaryKey -
Returns:

get

public ITEM get(PRIMARY_KEY primaryKey,
                SECONDARY_KEY secondaryKey,
                TERTIARY_KEY tertiaryKey)
Returns item specified, returns null if item does not appear in the map.

Parameters:
primaryKey -
secondaryKey -
tertiaryKey -
Returns:

put

public void put(PRIMARY_KEY primaryKey,
                SECONDARY_KEY secondaryKey,
                TERTIARY_KEY tertiaryKey,
                ITEM item)
Puts the item into the map.

Parameters:
primaryKey -
secondaryKey -
tertiaryKey -
item -

remove

public java.util.Map<SECONDARY_KEY,java.util.Map<TERTIARY_KEY,ITEM>> remove(java.lang.Object primaryKey)
Removes the requested map. If the map doesn't exist, returns an empty map.

Specified by:
remove in interface java.util.Map<PRIMARY_KEY,java.util.Map<SECONDARY_KEY,java.util.Map<TERTIARY_KEY,ITEM>>>
Overrides:
remove in class java.util.WeakHashMap<PRIMARY_KEY,java.util.Map<SECONDARY_KEY,java.util.Map<TERTIARY_KEY,ITEM>>>

remove

public java.util.Map<TERTIARY_KEY,ITEM> remove(PRIMARY_KEY primaryKey,
                                               SECONDARY_KEY secondaryKey)
removes the map under primary and secondary key, if the map does not exist, the data structure is not changed and a new map is returned.

Parameters:
primaryKey -
secondaryKey -
Returns:

remove

public ITEM remove(PRIMARY_KEY primaryKey,
                   SECONDARY_KEY secondaryKey,
                   TERTIARY_KEY tertiaryKey)
Returns the item under specified keys and removes it from the map, returns null if item is not present in the map.

Parameters:
primaryKey -
secondaryKey -
tertiaryKey -
Returns: