edu.stanford.nlp.util
Class ArrayCoreMap

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

public class ArrayCoreMap
extends java.lang.Object
implements CoreMap, java.io.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<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> boolean
containsKey(java.lang.Class<? extends TypesafeMap.Key<VALUE>> key)
          Returns true if contains the given key.
 boolean equals(java.lang.Object obj)
          Two CoreMaps are equal iff all keys and values are .equal.
<VALUE> VALUE
get(java.lang.Class<? extends TypesafeMap.Key<VALUE>> key)
          Returns the value associated with the given key or null if none is provided.
<VALUE> boolean
has(java.lang.Class<? extends TypesafeMap.Key<VALUE>> 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.
 java.util.Set<java.lang.Class<?>> keySet()
          Collection of keys currently held in this map.
 void prettyLog(Redwood.RedwoodChannels channels, java.lang.String description)
          Pretty logs the current object to specific Redwood channels.
<VALUE> VALUE
remove(java.lang.Class<? extends TypesafeMap.Key<VALUE>> key)
          Removes the given key from the map, returning the value removed.
<VALUE> VALUE
set(java.lang.Class<? extends TypesafeMap.Key<VALUE>> 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.
 java.lang.String toShorterString(java.lang.String... what)
          Attempt to provide a more human readable String for the contents of an ArrayCoreMap.
 java.lang.String toShortString(char separator, java.lang.String... what)
           
 java.lang.String toShortString(java.lang.String... what)
          This gives a very short String representation of a CoreMap by leaving it to the content to reveal what field is being printed.
 java.lang.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> VALUE get(java.lang.Class<? extends TypesafeMap.Key<VALUE>> key)
Returns the value associated with the given key or null if none is provided.

Specified by:
get in interface TypesafeMap

has

public <VALUE> boolean has(java.lang.Class<? extends TypesafeMap.Key<VALUE>> key)
Returns true if the map contains the given key.

Specified by:
has in interface TypesafeMap

set

public <VALUE> VALUE set(java.lang.Class<? extends TypesafeMap.Key<VALUE>> 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

keySet

public java.util.Set<java.lang.Class<?>> keySet()
Collection of keys currently held in this map. Some implementations may have the returned set be immutable.

Specified by:
keySet in interface TypesafeMap

remove

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

Specified by:
remove in interface TypesafeMap

containsKey

public <VALUE> boolean containsKey(java.lang.Class<? extends TypesafeMap.Key<VALUE>> key)
Returns true if contains the given key.

Specified by:
containsKey in interface TypesafeMap

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
Returns:
The number of elements in this map.

toString

public java.lang.String toString()
Overrides:
toString in class java.lang.Object

toShorterString

public java.lang.String toShorterString(java.lang.String... what)
Attempt to provide a more human readable String for the contents of an ArrayCoreMap.

Parameters:
what - An array (varargs) of Strings that say what annotation keys to print. These need to be provided in a shortened form where you are just giving the part of the class name without package and up to "Annotation". That is, edu.stanford.nlp.ling.CoreAnnotations.PartOfSpeechAnnotation --> PartOfSpeech . As a special case, an empty array means to print everything, not nothing.
Returns:
More human readable String giving possibly partial contents of ArrayCoreMap.

toShortString

public java.lang.String toShortString(java.lang.String... what)
This gives a very short String representation of a CoreMap by leaving it to the content to reveal what field is being printed.

Parameters:
what - An array (varargs) of Strings that say what annotation keys to print. These need to be provided in a shortened form where you are just giving the part of the class name without package and up to "Annotation". That is, edu.stanford.nlp.ling.CoreAnnotations.PartOfSpeechAnnotation -> PartOfSpeech . As a special case, an empty array means to print everything, not nothing.
Returns:
Brief string where the field values are just separated by a character. If the string contains spaces, it is wrapped in "{...}".

toShortString

public java.lang.String toShortString(char separator,
                                      java.lang.String... what)

equals

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

Overrides:
equals in class java.lang.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 java.lang.Object

prettyLog

public void prettyLog(Redwood.RedwoodChannels channels,
                      java.lang.String description)
Pretty logs the current object to specific Redwood channels.

Specified by:
prettyLog in interface PrettyLoggable
Parameters:
channels - the channels which should be logged to -- all logging calls should use logging methods on the channels (e.g. channels.log(), etc.)
description - The description of the object. It will potentially identify the object's functional role or (failing that) its class. This is typically used as a track name surrounding the contents of this object.


Stanford NLP Group