Package org.apache.commons.collections
Class SequencedHashMap
- java.lang.Object
-
- org.apache.commons.collections.SequencedHashMap
-
- All Implemented Interfaces:
java.io.Externalizable
,java.io.Serializable
,java.lang.Cloneable
,java.util.Map
- Direct Known Subclasses:
LRUMap
public class SequencedHashMap extends java.lang.Object implements java.util.Map, java.lang.Cloneable, java.io.Externalizable
Deprecated.Replaced by LinkedMap and ListOrderedMap in map subpackage. Due to be removed in v4.0.A map of objects whose mapping entries are sequenced based on the order in which they were added. This data structure has fast O(1) search time, deletion time, and insertion time.Although this map is sequenced, it cannot implement
List
because of incompatible interface definitions. The remove methods in List and Map have different return values (see:List.remove(Object)
andMap.remove(Object)
).This class is not thread safe. When a thread safe implementation is required, use
Collections.synchronizedMap(Map)
as it is documented, or use explicit synchronization controls.- Since:
- Commons Collections 2.0
- Version:
- $Revision: 646777 $ $Date: 2008-04-10 14:33:15 +0200 (Thu, 10 Apr 2008) $
- See Also:
LinkedMap
,ListOrderedMap
, Serialized Form
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description private static class
SequencedHashMap.Entry
Deprecated.Map.Entry
that doubles as a node in the linked list of sequenced mappings.private class
SequencedHashMap.OrderedIterator
Deprecated.
-
Field Summary
Fields Modifier and Type Field Description private java.util.HashMap
entries
Deprecated.Map of keys to entriesprivate static int
ENTRY
Deprecated.private static int
KEY
Deprecated.private long
modCount
Deprecated.Holds the number of modifications that have occurred to the map, excluding modifications made through a collection view's iterator (e.g.private static int
REMOVED_MASK
Deprecated.private SequencedHashMap.Entry
sentinel
Deprecated.Sentinel used to hold the head and tail of the list of entries.private static long
serialVersionUID
Deprecated.private static int
VALUE
Deprecated.
-
Constructor Summary
Constructors Constructor Description SequencedHashMap()
Deprecated.Construct a new sequenced hash map with default initial size and load factor.SequencedHashMap(int initialSize)
Deprecated.Construct a new sequenced hash map with the specified initial size and default load factor.SequencedHashMap(int initialSize, float loadFactor)
Deprecated.Construct a new sequenced hash map with the specified initial size and load factor.SequencedHashMap(java.util.Map m)
Deprecated.Construct a new sequenced hash map and add all the elements in the specified map.
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Deprecated Methods Modifier and Type Method Description void
clear()
Deprecated.ImplementsMap.clear()
.java.lang.Object
clone()
Deprecated.Creates a shallow copy of this object, preserving the internal structure by copying only references.boolean
containsKey(java.lang.Object key)
Deprecated.ImplementsMap.containsKey(Object)
.boolean
containsValue(java.lang.Object value)
Deprecated.ImplementsMap.containsValue(Object)
.private static SequencedHashMap.Entry
createSentinel()
Deprecated.Construct an empty sentinel used to hold the head (sentinel.next) and the tail (sentinel.prev) of the list.java.util.Set
entrySet()
Deprecated.ImplementsMap.entrySet()
.boolean
equals(java.lang.Object obj)
Deprecated.ImplementsMap.equals(Object)
.java.lang.Object
get(int index)
Deprecated.Gets the key at the specified index.java.lang.Object
get(java.lang.Object o)
Deprecated.ImplementsMap.get(Object)
.private java.util.Map.Entry
getEntry(int index)
Deprecated.Returns the Map.Entry at the specified indexjava.util.Map.Entry
getFirst()
Deprecated.Return the entry for the "oldest" mapping.java.lang.Object
getFirstKey()
Deprecated.Return the key for the "oldest" mapping.java.lang.Object
getFirstValue()
Deprecated.Return the value for the "oldest" mapping.java.util.Map.Entry
getLast()
Deprecated.Return the entry for the "newest" mapping.java.lang.Object
getLastKey()
Deprecated.Return the key for the "newest" mapping.java.lang.Object
getLastValue()
Deprecated.Return the value for the "newest" mapping.java.lang.Object
getValue(int index)
Deprecated.Gets the value at the specified index.int
hashCode()
Deprecated.ImplementsMap.hashCode()
.int
indexOf(java.lang.Object key)
Deprecated.Gets the index of the specified key.private void
insertEntry(SequencedHashMap.Entry entry)
Deprecated.Inserts a new internal entry to the tail of the linked list.boolean
isEmpty()
Deprecated.ImplementsMap.isEmpty()
.java.util.Iterator
iterator()
Deprecated.Gets an iterator over the keys.java.util.Set
keySet()
Deprecated.ImplementsMap.keySet()
.int
lastIndexOf(java.lang.Object key)
Deprecated.Gets the last index of the specified key.java.lang.Object
put(java.lang.Object key, java.lang.Object value)
Deprecated.ImplementsMap.put(Object, Object)
.void
putAll(java.util.Map t)
Deprecated.Adds all the mappings in the specified map to this map, replacing any mappings that already exist (as perMap.putAll(Map)
).void
readExternal(java.io.ObjectInput in)
Deprecated.Deserializes this map from the given stream.java.lang.Object
remove(int index)
Deprecated.Removes the element at the specified index.java.lang.Object
remove(java.lang.Object key)
Deprecated.ImplementsMap.remove(Object)
.private void
removeEntry(SequencedHashMap.Entry entry)
Deprecated.Removes an internal entry from the linked list.private SequencedHashMap.Entry
removeImpl(java.lang.Object key)
Deprecated.Fully remove an entry from the map, returning the old entry or null if there was no such entry with the specified key.java.util.List
sequence()
Deprecated.Returns a List view of the keys rather than a set view.int
size()
Deprecated.ImplementsMap.size()
.java.lang.String
toString()
Deprecated.Provides a string representation of the entries within the map.java.util.Collection
values()
Deprecated.ImplementsMap.values()
.void
writeExternal(java.io.ObjectOutput out)
Deprecated.Serializes this map to the given stream.
-
-
-
Field Detail
-
sentinel
private SequencedHashMap.Entry sentinel
Deprecated.Sentinel used to hold the head and tail of the list of entries.
-
entries
private java.util.HashMap entries
Deprecated.Map of keys to entries
-
modCount
private transient long modCount
Deprecated.Holds the number of modifications that have occurred to the map, excluding modifications made through a collection view's iterator (e.g. entrySet().iterator().remove()). This is used to create a fail-fast behavior with the iterators.
-
KEY
private static final int KEY
Deprecated.- See Also:
- Constant Field Values
-
VALUE
private static final int VALUE
Deprecated.- See Also:
- Constant Field Values
-
ENTRY
private static final int ENTRY
Deprecated.- See Also:
- Constant Field Values
-
REMOVED_MASK
private static final int REMOVED_MASK
Deprecated.- See Also:
- Constant Field Values
-
serialVersionUID
private static final long serialVersionUID
Deprecated.- See Also:
- Constant Field Values
-
-
Constructor Detail
-
SequencedHashMap
public SequencedHashMap()
Deprecated.Construct a new sequenced hash map with default initial size and load factor.
-
SequencedHashMap
public SequencedHashMap(int initialSize)
Deprecated.Construct a new sequenced hash map with the specified initial size and default load factor.- Parameters:
initialSize
- the initial size for the hash table- See Also:
HashMap(int)
-
SequencedHashMap
public SequencedHashMap(int initialSize, float loadFactor)
Deprecated.Construct a new sequenced hash map with the specified initial size and load factor.- Parameters:
initialSize
- the initial size for the hash tableloadFactor
- the load factor for the hash table.- See Also:
HashMap(int,float)
-
SequencedHashMap
public SequencedHashMap(java.util.Map m)
Deprecated.Construct a new sequenced hash map and add all the elements in the specified map. The order in which the mappings in the specified map are added is defined byputAll(Map)
.
-
-
Method Detail
-
createSentinel
private static final SequencedHashMap.Entry createSentinel()
Deprecated.Construct an empty sentinel used to hold the head (sentinel.next) and the tail (sentinel.prev) of the list. The sentinel has anull
key and value.
-
removeEntry
private void removeEntry(SequencedHashMap.Entry entry)
Deprecated.Removes an internal entry from the linked list. This does not remove it from the underlying map.
-
insertEntry
private void insertEntry(SequencedHashMap.Entry entry)
Deprecated.Inserts a new internal entry to the tail of the linked list. This does not add the entry to the underlying map.
-
size
public int size()
Deprecated.ImplementsMap.size()
.- Specified by:
size
in interfacejava.util.Map
-
isEmpty
public boolean isEmpty()
Deprecated.ImplementsMap.isEmpty()
.- Specified by:
isEmpty
in interfacejava.util.Map
-
containsKey
public boolean containsKey(java.lang.Object key)
Deprecated.ImplementsMap.containsKey(Object)
.- Specified by:
containsKey
in interfacejava.util.Map
-
containsValue
public boolean containsValue(java.lang.Object value)
Deprecated.ImplementsMap.containsValue(Object)
.- Specified by:
containsValue
in interfacejava.util.Map
-
get
public java.lang.Object get(java.lang.Object o)
Deprecated.ImplementsMap.get(Object)
.- Specified by:
get
in interfacejava.util.Map
-
getFirst
public java.util.Map.Entry getFirst()
Deprecated.Return the entry for the "oldest" mapping. That is, return the Map.Entry for the key-value pair that was first put into the map when compared to all the other pairings in the map. This behavior is equivalent to usingentrySet().iterator().next()
, but this method provides an optimized implementation.- Returns:
- The first entry in the sequence, or
null
if the map is empty.
-
getFirstKey
public java.lang.Object getFirstKey()
Deprecated.Return the key for the "oldest" mapping. That is, return the key for the mapping that was first put into the map when compared to all the other objects in the map. This behavior is equivalent to usinggetFirst().getKey()
, but this method provides a slightly optimized implementation.- Returns:
- The first key in the sequence, or
null
if the map is empty.
-
getFirstValue
public java.lang.Object getFirstValue()
Deprecated.Return the value for the "oldest" mapping. That is, return the value for the mapping that was first put into the map when compared to all the other objects in the map. This behavior is equivalent to usinggetFirst().getValue()
, but this method provides a slightly optimized implementation.- Returns:
- The first value in the sequence, or
null
if the map is empty.
-
getLast
public java.util.Map.Entry getLast()
Deprecated.Return the entry for the "newest" mapping. That is, return the Map.Entry for the key-value pair that was first put into the map when compared to all the other pairings in the map. The behavior is equivalent to:Object obj = null; Iterator iter = entrySet().iterator(); while(iter.hasNext()) { obj = iter.next(); } return (Map.Entry)obj;
However, the implementation of this method ensures an O(1) lookup of the last key rather than O(n).- Returns:
- The last entry in the sequence, or
null
if the map is empty.
-
getLastKey
public java.lang.Object getLastKey()
Deprecated.Return the key for the "newest" mapping. That is, return the key for the mapping that was last put into the map when compared to all the other objects in the map. This behavior is equivalent to usinggetLast().getKey()
, but this method provides a slightly optimized implementation.- Returns:
- The last key in the sequence, or
null
if the map is empty.
-
getLastValue
public java.lang.Object getLastValue()
Deprecated.Return the value for the "newest" mapping. That is, return the value for the mapping that was last put into the map when compared to all the other objects in the map. This behavior is equivalent to usinggetLast().getValue()
, but this method provides a slightly optimized implementation.- Returns:
- The last value in the sequence, or
null
if the map is empty.
-
put
public java.lang.Object put(java.lang.Object key, java.lang.Object value)
Deprecated.ImplementsMap.put(Object, Object)
.- Specified by:
put
in interfacejava.util.Map
-
remove
public java.lang.Object remove(java.lang.Object key)
Deprecated.ImplementsMap.remove(Object)
.- Specified by:
remove
in interfacejava.util.Map
-
removeImpl
private SequencedHashMap.Entry removeImpl(java.lang.Object key)
Deprecated.Fully remove an entry from the map, returning the old entry or null if there was no such entry with the specified key.
-
putAll
public void putAll(java.util.Map t)
Deprecated.Adds all the mappings in the specified map to this map, replacing any mappings that already exist (as perMap.putAll(Map)
). The order in which the entries are added is determined by the iterator returned fromMap.entrySet()
for the specified map.- Specified by:
putAll
in interfacejava.util.Map
- Parameters:
t
- the mappings that should be added to this map.- Throws:
java.lang.NullPointerException
- ift
isnull
-
clear
public void clear()
Deprecated.ImplementsMap.clear()
.- Specified by:
clear
in interfacejava.util.Map
-
equals
public boolean equals(java.lang.Object obj)
Deprecated.ImplementsMap.equals(Object)
.- Specified by:
equals
in interfacejava.util.Map
- Overrides:
equals
in classjava.lang.Object
-
hashCode
public int hashCode()
Deprecated.ImplementsMap.hashCode()
.- Specified by:
hashCode
in interfacejava.util.Map
- Overrides:
hashCode
in classjava.lang.Object
-
toString
public java.lang.String toString()
Deprecated.Provides a string representation of the entries within the map. The format of the returned string may change with different releases, so this method is suitable for debugging purposes only. If a specific format is required, useentrySet()
.iterator()
and iterate over the entries in the map formatting them as appropriate.- Overrides:
toString
in classjava.lang.Object
-
keySet
public java.util.Set keySet()
Deprecated.ImplementsMap.keySet()
.- Specified by:
keySet
in interfacejava.util.Map
-
values
public java.util.Collection values()
Deprecated.ImplementsMap.values()
.- Specified by:
values
in interfacejava.util.Map
-
entrySet
public java.util.Set entrySet()
Deprecated.ImplementsMap.entrySet()
.- Specified by:
entrySet
in interfacejava.util.Map
-
clone
public java.lang.Object clone() throws java.lang.CloneNotSupportedException
Deprecated.Creates a shallow copy of this object, preserving the internal structure by copying only references. The keys and values themselves are notclone()
'd. The cloned object maintains the same sequence.- Overrides:
clone
in classjava.lang.Object
- Returns:
- A clone of this instance.
- Throws:
java.lang.CloneNotSupportedException
- if clone is not supported by a subclass.
-
getEntry
private java.util.Map.Entry getEntry(int index)
Deprecated.Returns the Map.Entry at the specified index- Throws:
java.lang.ArrayIndexOutOfBoundsException
- if the specified index is< 0
or>
the size of the map.
-
get
public java.lang.Object get(int index)
Deprecated.Gets the key at the specified index.- Parameters:
index
- the index to retrieve- Returns:
- the key at the specified index, or null
- Throws:
java.lang.ArrayIndexOutOfBoundsException
- if theindex
is< 0
or>
the size of the map.
-
getValue
public java.lang.Object getValue(int index)
Deprecated.Gets the value at the specified index.- Parameters:
index
- the index to retrieve- Returns:
- the value at the specified index, or null
- Throws:
java.lang.ArrayIndexOutOfBoundsException
- if theindex
is< 0
or>
the size of the map.
-
indexOf
public int indexOf(java.lang.Object key)
Deprecated.Gets the index of the specified key.- Parameters:
key
- the key to find the index of- Returns:
- the index, or -1 if not found
-
iterator
public java.util.Iterator iterator()
Deprecated.Gets an iterator over the keys.- Returns:
- an iterator over the keys
-
lastIndexOf
public int lastIndexOf(java.lang.Object key)
Deprecated.Gets the last index of the specified key.- Parameters:
key
- the key to find the index of- Returns:
- the index, or -1 if not found
-
sequence
public java.util.List sequence()
Deprecated.Returns a List view of the keys rather than a set view. The returned list is unmodifiable. This is required because changes to the values of the list (usingListIterator.set(Object)
) will effectively remove the value from the list and reinsert that value at the end of the list, which is an unexpected side effect of changing the value of a list. This occurs because changing the key, changes when the mapping is added to the map and thus where it appears in the list.An alternative to this method is to use
keySet()
- Returns:
- The ordered list of keys.
- See Also:
keySet()
-
remove
public java.lang.Object remove(int index)
Deprecated.Removes the element at the specified index.- Parameters:
index
- The index of the object to remove.- Returns:
- The previous value corresponding the
key
, ornull
if none existed. - Throws:
java.lang.ArrayIndexOutOfBoundsException
- if theindex
is< 0
or>
the size of the map.
-
readExternal
public void readExternal(java.io.ObjectInput in) throws java.io.IOException, java.lang.ClassNotFoundException
Deprecated.Deserializes this map from the given stream.- Specified by:
readExternal
in interfacejava.io.Externalizable
- Parameters:
in
- the stream to deserialize from- Throws:
java.io.IOException
- if the stream raises itjava.lang.ClassNotFoundException
- if the stream raises it
-
writeExternal
public void writeExternal(java.io.ObjectOutput out) throws java.io.IOException
Deprecated.Serializes this map to the given stream.- Specified by:
writeExternal
in interfacejava.io.Externalizable
- Parameters:
out
- the stream to serialize to- Throws:
java.io.IOException
- if the stream raises it
-
-