edu.stanford.nlp.util
Class ArrayCoreMap

java.lang.Object
  extended by edu.stanford.nlp.util.ArrayCoreMap
All Implemented Interfaces:
CoreMap, TypesafeMap<CoreMap>, Serializable
Direct Known Subclasses:
CoreLabel, HashableCoreMap

public class ArrayCoreMap
extends Object
implements CoreMap, Serializable

Base implementation of CoreMap backed by Java Arrays.

Reasonable care has been put into ensuring that this class is both fast and has a light memory footprint.

Note that like the base classes in the Collections API, this implementation is not thread-safe. For speed reasons, these methods are not synchronized. A synchronized wrapper could be developed by anyone so inclined.

Equality is defined over the complete set of keys and values currently stored in the map. Because this class is mutable, it should not be used as a key in a HashMap.

Author:
dramage, rafferty
See Also:
Serialized Form

Nested Class Summary
 
Nested classes/interfaces inherited from interface edu.stanford.nlp.util.TypesafeMap
TypesafeMap.Key<BASE,VALUE>
 
Constructor Summary
ArrayCoreMap()
          Default constructor - initializes with default initial annotation capacity of 4.
ArrayCoreMap(ArrayCoreMap other)
          Copy constructor.
ArrayCoreMap(CoreMap other)
          Copy constructor.
ArrayCoreMap(int capacity)
          Initializes this ArrayCoreMap, pre-allocating arrays to hold up to capacity key,value pairs.
 
Method Summary
 void compact()
          Reduces memory consumption to the minimum for representing the values currently stored stored in this object.
<VALUE,KEY extends TypesafeMap.Key<CoreMap,VALUE>>
boolean
containsKey(Class<KEY> key)
          Returns true if contains the given key.
 boolean equals(Object obj)
          Two CoreMaps are equal iff all keys and values are .equal.
<VALUE,KEY extends TypesafeMap.Key<CoreMap,VALUE>>
VALUE
get(Class<KEY> key)
          Returns the value associated with the given key or null if none is provided.
<VALUE,KEY extends TypesafeMap.Key<CoreMap,VALUE>>
boolean
has(Class<KEY> key)
          Returns true if the map contains the given key.
 int hashCode()
          Returns a composite hashCode over all the keys and values currently stored in the map.
 Set<Class<?>> keySet()
          Collection of keys currently held in this map.
<VALUE,KEY extends TypesafeMap.Key<CoreMap,VALUE>>
VALUE
remove(Class<KEY> key)
          Removes the given key from the map, returning the value removed.
<VALUEBASE,VALUE extends VALUEBASE,KEY extends TypesafeMap.Key<CoreMap,VALUEBASE>>
VALUE
set(Class<KEY> key, VALUE value)
          Associates the given value with the given type for future calls to get.
 void setCapacity(int newSize)
           
 int size()
          Returns the number of elements in this map.
 String toShorterString(String... what)
           
 String toString()
           
 
Methods inherited from class java.lang.Object
clone, finalize, getClass, notify, notifyAll, wait, wait, wait
 

Constructor Detail

ArrayCoreMap

public ArrayCoreMap()
Default constructor - initializes with default initial annotation capacity of 4.


ArrayCoreMap

public ArrayCoreMap(int capacity)
Initializes this ArrayCoreMap, pre-allocating arrays to hold up to capacity key,value pairs. This array will grow if necessary.

Parameters:
capacity - Initial capacity of object in key,value pairs

ArrayCoreMap

public ArrayCoreMap(ArrayCoreMap other)
Copy constructor.

Parameters:
other - The ArrayCoreMap to copy. It may not be null.

ArrayCoreMap

public ArrayCoreMap(CoreMap other)
Copy constructor.

Parameters:
other - The ArrayCoreMap to copy. It may not be null.
Method Detail

get

public <VALUE,KEY extends TypesafeMap.Key<CoreMap,VALUE>> VALUE get(Class<KEY> key)
Returns the value associated with the given key or null if none is provided.

Specified by:
get in interface TypesafeMap<CoreMap>

has

public <VALUE,KEY extends TypesafeMap.Key<CoreMap,VALUE>> boolean has(Class<KEY> key)
Returns true if the map contains the given key.

Specified by:
has in interface TypesafeMap<CoreMap>

set

public <VALUEBASE,VALUE extends VALUEBASE,KEY extends TypesafeMap.Key<CoreMap,VALUEBASE>> VALUE set(Class<KEY> key,
                                                                                                    VALUE value)
Associates the given value with the given type for future calls to get. Returns the value removed or null if no value was present.

Specified by:
set in interface TypesafeMap<CoreMap>

keySet

public Set<Class<?>> keySet()
Collection of keys currently held in this map. Some implementations may have the returned set be immutable. As of Java 1.6 Java's generics type inference is broken enough that the proper signature for this method - Set<Class<? extends Key<BASE,?>>> - cannot be implemented by subclasses, so the return signature is not typed as strongly as it could be.

Specified by:
keySet in interface TypesafeMap<CoreMap>

remove

public <VALUE,KEY extends TypesafeMap.Key<CoreMap,VALUE>> VALUE remove(Class<KEY> key)
Removes the given key from the map, returning the value removed.

Specified by:
remove in interface TypesafeMap<CoreMap>

containsKey

public <VALUE,KEY extends TypesafeMap.Key<CoreMap,VALUE>> boolean containsKey(Class<KEY> key)
Returns true if contains the given key.

Specified by:
containsKey in interface TypesafeMap<CoreMap>

compact

public void compact()
Reduces memory consumption to the minimum for representing the values currently stored stored in this object.


setCapacity

public void setCapacity(int newSize)

size

public int size()
Returns the number of elements in this map.

Specified by:
size in interface TypesafeMap<CoreMap>
Returns:
The number of elements in this map.

toString

public String toString()
Overrides:
toString in class Object

toShorterString

public String toShorterString(String... what)

equals

public boolean equals(Object obj)
Two CoreMaps are equal iff all keys and values are .equal.

Overrides:
equals in class Object

hashCode

public int hashCode()
Returns a composite hashCode over all the keys and values currently stored in the map. Because they may change over time, this class is not appropriate for use as map keys.

Overrides:
hashCode in class Object


Stanford NLP Group