sos.dated.util
Class HashMapByKey

java.lang.Object
  |
  +--sos.dated.util.AbstractDatedObject
        |
        +--sos.dated.util.AbstractDatedMap
              |
              +--sos.dated.util.AbstractMapByKey
                    |
                    +--sos.dated.util.HashMapByKey
All Implemented Interfaces:
java.lang.Cloneable, DatedMap, DatedObject, java.io.Serializable

public class HashMapByKey
extends sos.dated.util.AbstractMapByKey
implements DatedMap, java.io.Serializable, java.lang.Cloneable

An implementation of DatedMap that indexes its keys with a java.util.HashMap, yielding fast insertions and removals.

This implementation is serializable and cloneable; however, it is not synchronized. To use it safely in a multi-threaded situation, wrap an instance of the dated map with a call to DatedCollections.synchronizedDatedMap.

Since:
1.0
See Also:
HashMapByDate, TreeMapByKey, DatedMap, DatedCollections.synchronizedDatedMap(DatedMap)

Nested Class Summary
 
Nested classes inherited from class sos.dated.util.DatedMap
DatedMap.Entry
 
Field Summary
 
Fields inherited from interface sos.dated.util.DatedObject
MAX_DATE, MIN_DATE
 
Constructor Summary
HashMapByKey()
          Creates a new instance of HashMapByKey.
HashMapByKey(DatedMap datedMap)
          Creates a new instance of HashMapByKey from the specified dated map.
HashMapByKey(int initialCapacity)
          Creates a new instance of HashMapByKey with the specified initial capacity and default load factor (0.75).
HashMapByKey(int initialCapacity, float loadFactor)
          Creates a new instance of HashMapByKey with the specified initial capacity and load factor.
 
Method Summary
protected  void checkForComodification(int expectedModCount, java.util.Date date)
          Throws a ConcurrentModificationException if the expected modification count does not equal the actual modification count for the specified date.
 java.lang.Object clone()
          Creates and returns a copy of this object.
 boolean containsKey(java.lang.Object key, java.util.Date date)
          Returns true if this dated map contains the specified key at the specified date.
 boolean containsKeyThroughout(java.lang.Object key, java.util.Date from, java.util.Date to)
          Returns true if this dated map contains the specified key throughout the specified date range.
 DateIterator dateIterator(java.util.Date date)
          Returns an iterator of the date ranges of when this dated type has changed.
 DatedSet entrySet()
          Returns a modifiable view of the mappings of this dated map.
 boolean excludesKeyThroughout(java.lang.Object key, java.util.Date from, java.util.Date to)
          Returns true if this dated map does not contain the specified key at any date within the specified date range.
 DatedValue get(java.lang.Object key)
          Returns the values associated with the specified key for all dates.
protected  int modCount(java.util.Date date)
           
 DatedValue put(java.lang.Object key, java.lang.Object value, java.util.Date from, java.util.Date to)
          Associates key with value in this dated map during the specified date range.
 DatedValue remove(java.lang.Object key, java.util.Date from, java.util.Date to)
          Removes any values associated with the specified key in the specified date range.
protected  void upModCount(java.util.Date from, java.util.Date to)
           
 
Methods inherited from class sos.dated.util.AbstractDatedMap
clear, containsValue, containsValueThroughout, equals, excludesValueThroughout, get, hashCode, hasSizeThroughout, isEmpty, isEmptyThroughout, keySet, putAll, size, toString, values
 
Methods inherited from class sos.dated.util.AbstractDatedObject
dateIterator, equals, hashCode, toString
 
Methods inherited from class java.lang.Object
finalize, getClass, notify, notifyAll, wait, wait, wait
 
Methods inherited from interface sos.dated.util.DatedMap
clear, containsKey, containsKeyThroughout, containsValue, containsValueThroughout, entrySet, equals, excludesKeyThroughout, excludesValueThroughout, get, get, hashCode, hasSizeThroughout, isEmpty, isEmptyThroughout, keySet, put, putAll, remove, size, values
 
Methods inherited from interface sos.dated.util.DatedObject
dateIterator, dateIterator, equals, hashCode, toString
 

Constructor Detail

HashMapByKey

public HashMapByKey()
Creates a new instance of HashMapByKey.


HashMapByKey

public HashMapByKey(int initialCapacity)
Creates a new instance of HashMapByKey with the specified initial capacity and default load factor (0.75). The initial capacity is used to initialize the underlying java.util.HashMap, which holds all mappings across all time.

Parameters:
initialCapacity - initial capacity of the underlying hash map

HashMapByKey

public HashMapByKey(int initialCapacity,
                    float loadFactor)
Creates a new instance of HashMapByKey with the specified initial capacity and load factor.

Parameters:
initialCapacity - initial capacity of the underlying hash map
loadFactor - load factor of the underlying hash map

HashMapByKey

public HashMapByKey(DatedMap datedMap)
Creates a new instance of HashMapByKey from the specified dated map.

Parameters:
datedMap - dated map for which to initialize this HashMapByKey
Method Detail

clone

public java.lang.Object clone()
Description copied from class: AbstractDatedMap
Creates and returns a copy of this object. Subclasses that wish to be cloneable should override this method but first call their parent's clone method.

Overrides:
clone in class sos.dated.util.AbstractMapByKey
Returns:
a copy of this dated map

checkForComodification

protected void checkForComodification(int expectedModCount,
                                      java.util.Date date)
Throws a ConcurrentModificationException if the expected modification count does not equal the actual modification count for the specified date.

Parameters:
expectedModCount - the caller's expected modification count
date - the date in question
Throws:
java.util.ConcurrentModificationException - if the expected modification count does not equal the actual modification count for the specified date

containsKey

public boolean containsKey(java.lang.Object key,
                           java.util.Date date)
Description copied from interface: DatedMap
Returns true if this dated map contains the specified key at the specified date.

Specified by:
containsKey in interface DatedMap
Overrides:
containsKey in class AbstractDatedMap
Parameters:
key - key whose presence is to be tested
date - date at which this map is to be queried
Returns:
true if this dated map contains the specified key at the specified date

containsKeyThroughout

public boolean containsKeyThroughout(java.lang.Object key,
                                     java.util.Date from,
                                     java.util.Date to)
Description copied from interface: DatedMap
Returns true if this dated map contains the specified key throughout the specified date range.

Specified by:
containsKeyThroughout in interface DatedMap
Overrides:
containsKeyThroughout in class AbstractDatedMap
Parameters:
key - key whose presence is to be tested
from - starting date (inclusive) at which containment should be tested
to - ending date (exclusive) at which containment should be tested
Returns:
true if this dated map contains the specified key throughout the specified date range

dateIterator

public DateIterator dateIterator(java.util.Date date)
Returns an iterator of the date ranges of when this dated type has changed. Throughout a range returned by the iterator, the state of the dated object must be the same. Also, the states of the dated object must be different in two consecutive ranges returned by the iterator. There are no gaps in the ranges returned by the iterator. That is, if a previous date range exists, then a call to nextFrom returns the same date as previousTo.

Specified by:
dateIterator in interface DatedObject
Specified by:
dateIterator in class AbstractDatedObject
Parameters:
date - date to position the iteration
Returns:
an iterator of the dates of when this dated type has changed.
Throws:
java.lang.IllegalArgumentException - if from does not precede to

excludesKeyThroughout

public boolean excludesKeyThroughout(java.lang.Object key,
                                     java.util.Date from,
                                     java.util.Date to)
Description copied from interface: DatedMap
Returns true if this dated map does not contain the specified key at any date within the specified date range.

Specified by:
excludesKeyThroughout in interface DatedMap
Overrides:
excludesKeyThroughout in class AbstractDatedMap
Parameters:
key - key whose presence is to be tested
from - starting date (inclusive) at which exclusion should be tested
to - ending date (exclusive) at which exclusion should be tested
Returns:
true if this dated map does not contain key key between from and to

get

public DatedValue get(java.lang.Object key)
Description copied from interface: DatedMap
Returns the values associated with the specified key for all dates. The returned dated value is backed by this dated map. Thus, changes to the dated value are reflected in this map and vice versa. Setting a value in the dated value is equivalent to invoking put on this map. Setting a value to null is not equivalent to removing the key from this map. A null value may mean either that the key is associated with null or that the key is not present in this map. (This behavior is consistent with the specification of get in java.util.Map).

If this map does not support put, then set of the dated value will throw an UnsupportedOperationException.

Iteration through the dates of the dated value may result in a ConcurrentModificationException if this map's dates are altered during the iteration.

Specified by:
get in interface DatedMap
Overrides:
get in class AbstractDatedMap
Parameters:
key - key whose values are to be returned
Returns:
a dated value of the values associated with key

modCount

protected int modCount(java.util.Date date)

put

public DatedValue put(java.lang.Object key,
                      java.lang.Object value,
                      java.util.Date from,
                      java.util.Date to)
Description copied from interface: DatedMap
Associates key with value in this dated map during the specified date range.

Specified by:
put in interface DatedMap
Overrides:
put in class AbstractDatedMap
Parameters:
key - key to put in this dated map
value - value to map to the key
from - starting date of the range (inclusive) to put the mapping
to - ending date of the range (exclusive) to put the mapping
Returns:
the value(s) mapped to the specified key in the specified range before the invocation

upModCount

protected void upModCount(java.util.Date from,
                          java.util.Date to)

entrySet

public DatedSet entrySet()
Description copied from interface: DatedMap
Returns a modifiable view of the mappings of this dated map. Each element of the returned view implement java.util.Map.

Specified by:
entrySet in interface DatedMap
Specified by:
entrySet in class AbstractDatedMap
Returns:
a dated set of the entries of this dated map

remove

public DatedValue remove(java.lang.Object key,
                         java.util.Date from,
                         java.util.Date to)
Description copied from interface: DatedMap
Removes any values associated with the specified key in the specified date range.

Specified by:
remove in interface DatedMap
Overrides:
remove in class AbstractDatedMap
Parameters:
key - key indicating which mapping to remove
from - starting date of the range (inclusive) to remove the mapping
to - ending date of the range (exclusive) to remove the mapping
Returns:
the value(s) mapped to the specified key in the specified range before the invocation


Copyright 2003 Side of Software (SOS). All rights reserved.