Class ListOrderedMap
- All Implemented Interfaces:
Serializable,Map,IterableMap,OrderedMap
Map to ensure that the order of addition is retained
using a List to maintain order.
The order will be used via the iterators and toArray methods on the views.
The order is also returned by the MapIterator.
The orderedMapIterator() method accesses an iterator that can
iterate both forwards and backwards through the map.
In addition, non-interface methods are provided to access the map by index.
If an object is added to the Map for a second time, it will remain in the original position in the iteration.
Note that ListOrderedMap is not synchronized and is not thread-safe.
If you wish to use this map from multiple threads concurrently, you must use
appropriate synchronization. The simplest approach is to wrap this map
using Collections.synchronizedMap(Map). This class may throw
exceptions when accessed by concurrent threads without synchronization.
This class is Serializable from Commons Collections 3.1.
- Since:
- Commons Collections 3.0
- Version:
- $Revision: 646777 $ $Date: 2008-04-10 14:33:15 +0200 (Thu, 10 Apr 2008) $
- Author:
- Henri Yandell, Stephen Colebourne, Matt Benson
- See Also:
-
Nested Class Summary
-
Field Summary
FieldsModifier and TypeFieldDescriptionprotected final ListInternal list to hold the sequence of objectsFields inherited from class org.apache.commons.collections.map.AbstractMapDecorator
map -
Constructor Summary
ConstructorsModifierConstructorDescriptionConstructs a new emptyListOrderedMapthat decorates aHashMap.protectedListOrderedMap(Map map) Constructor that wraps (not copies). -
Method Summary
Modifier and TypeMethodDescriptionasList()Gets an unmodifiable List view of the keys which changes as the map changes.voidclear()static OrderedMapFactory method to create an ordered map.entrySet()Gets a view over the entries in the map.firstKey()Gets the first key in this map by insert order.get(int index) Gets the key at the specified index.getValue(int index) Gets the value at the specified index.intGets the index of the specified key.keyList()Gets a view over the keys in the map as a List.keySet()Gets a view over the keys in the map.lastKey()Gets the last key in this map by insert order.Obtains aMapIteratorover the map.Gets the next key to the one specified using insert order.Obtains anOrderedMapIteratorover the map.previousKey(Object key) Gets the previous key to the one specified using insert order.Puts a key-value mapping into the map at the specified index.voidremove(int index) Removes the element at the specified index.Sets the value at the specified index.toString()Returns the Map as a string.Gets a view over the values in the map as a List.values()Gets a view over the values in the map.Methods inherited from class org.apache.commons.collections.map.AbstractMapDecorator
containsKey, containsValue, equals, get, getMap, hashCode, isEmpty, sizeMethods inherited from class java.lang.Object
clone, finalize, getClass, notify, notifyAll, wait, wait, waitMethods inherited from interface java.util.Map
compute, computeIfAbsent, computeIfPresent, containsKey, containsValue, equals, forEach, get, getOrDefault, hashCode, isEmpty, merge, putIfAbsent, remove, replace, replace, replaceAll, size
-
Field Details
-
insertOrder
Internal list to hold the sequence of objects
-
-
Constructor Details
-
ListOrderedMap
public ListOrderedMap()Constructs a new emptyListOrderedMapthat decorates aHashMap.- Since:
- Commons Collections 3.1
-
ListOrderedMap
Constructor that wraps (not copies).- Parameters:
map- the map to decorate, must not be null- Throws:
IllegalArgumentException- if map is null
-
-
Method Details
-
decorate
Factory method to create an ordered map.An
ArrayListis used to retain order.- Parameters:
map- the map to decorate, must not be null- Throws:
IllegalArgumentException- if map is null
-
mapIterator
Description copied from interface:IterableMapObtains aMapIteratorover the map.A map iterator is an efficient way of iterating over maps. There is no need to access the entry set or cast to Map Entry objects.
IterableMap map = new HashedMap(); MapIterator it = map.mapIterator(); while (it.hasNext()) { Object key = it.next(); Object value = it.getValue(); it.setValue("newValue"); }- Specified by:
mapIteratorin interfaceIterableMap- Returns:
- a map iterator
-
orderedMapIterator
Description copied from interface:OrderedMapObtains anOrderedMapIteratorover the map.A ordered map iterator is an efficient way of iterating over maps in both directions.
BidiMap map = new TreeBidiMap(); MapIterator it = map.mapIterator(); while (it.hasNext()) { Object key = it.next(); Object value = it.getValue(); it.setValue("newValue"); Object previousKey = it.previous(); }- Specified by:
orderedMapIteratorin interfaceOrderedMap- Returns:
- a map iterator
-
firstKey
Gets the first key in this map by insert order.- Specified by:
firstKeyin interfaceOrderedMap- Returns:
- the first key currently in this map
- Throws:
NoSuchElementException- if this map is empty
-
lastKey
Gets the last key in this map by insert order.- Specified by:
lastKeyin interfaceOrderedMap- Returns:
- the last key currently in this map
- Throws:
NoSuchElementException- if this map is empty
-
nextKey
Gets the next key to the one specified using insert order. This method performs a list search to find the key and is O(n).- Specified by:
nextKeyin interfaceOrderedMap- Parameters:
key- the key to find previous for- Returns:
- the next key, null if no match or at start
-
previousKey
Gets the previous key to the one specified using insert order. This method performs a list search to find the key and is O(n).- Specified by:
previousKeyin interfaceOrderedMap- Parameters:
key- the key to find previous for- Returns:
- the previous key, null if no match or at start
-
put
- Specified by:
putin interfaceMap- Overrides:
putin classAbstractMapDecorator
-
putAll
- Specified by:
putAllin interfaceMap- Overrides:
putAllin classAbstractMapDecorator
-
remove
- Specified by:
removein interfaceMap- Overrides:
removein classAbstractMapDecorator
-
clear
public void clear()- Specified by:
clearin interfaceMap- Overrides:
clearin classAbstractMapDecorator
-
keySet
Gets a view over the keys in the map.The Collection will be ordered by object insertion into the map.
- Specified by:
keySetin interfaceMap- Overrides:
keySetin classAbstractMapDecorator- Returns:
- the fully modifiable collection view over the keys
- See Also:
-
keyList
Gets a view over the keys in the map as a List.The List will be ordered by object insertion into the map. The List is unmodifiable.
- Returns:
- the unmodifiable list view over the keys
- Since:
- Commons Collections 3.2
- See Also:
-
values
Gets a view over the values in the map.The Collection will be ordered by object insertion into the map.
From Commons Collections 3.2, this Collection can be cast to a list, see
valueList()- Specified by:
valuesin interfaceMap- Overrides:
valuesin classAbstractMapDecorator- Returns:
- the fully modifiable collection view over the values
- See Also:
-
valueList
Gets a view over the values in the map as a List.The List will be ordered by object insertion into the map. The List supports remove and set, but does not support add.
- Returns:
- the partially modifiable list view over the values
- Since:
- Commons Collections 3.2
- See Also:
-
entrySet
Gets a view over the entries in the map.The Set will be ordered by object insertion into the map.
- Specified by:
entrySetin interfaceMap- Overrides:
entrySetin classAbstractMapDecorator- Returns:
- the fully modifiable set view over the entries
-
toString
Returns the Map as a string.- Overrides:
toStringin classAbstractMapDecorator- Returns:
- the Map as a String
-
get
Gets the key at the specified index.- Parameters:
index- the index to retrieve- Returns:
- the key at the specified index
- Throws:
IndexOutOfBoundsException- if the index is invalid
-
getValue
Gets the value at the specified index.- Parameters:
index- the index to retrieve- Returns:
- the key at the specified index
- Throws:
IndexOutOfBoundsException- if the index is invalid
-
indexOf
Gets the index of the specified key.- Parameters:
key- the key to find the index of- Returns:
- the index, or -1 if not found
-
setValue
Sets the value at the specified index.- Parameters:
index- the index of the value to set- Returns:
- the previous value at that index
- Throws:
IndexOutOfBoundsException- if the index is invalid- Since:
- Commons Collections 3.2
-
put
Puts a key-value mapping into the map at the specified index.If the map already contains the key, then the original mapping is removed and the new mapping added at the specified index. The remove may change the effect of the index. The index is always calculated relative to the original state of the map.
Thus the steps are: (1) remove the existing key-value mapping, then (2) insert the new key-value mapping at the position it would have been inserted had the remove not ocurred.
- Parameters:
index- the index at which the mapping should be insertedkey- the keyvalue- the value- Returns:
- the value previously mapped to the key
- Throws:
IndexOutOfBoundsException- if the index is out of range- Since:
- Commons Collections 3.2
-
remove
Removes the element at the specified index.- Parameters:
index- the index of the object to remove- Returns:
- the removed value, or
nullif none existed - Throws:
IndexOutOfBoundsException- if the index is invalid
-
asList
Gets an unmodifiable List view of the keys which changes as the map changes.The returned list is unmodifiable because changes to the values of the list (using
ListIterator.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 the better named
keyList()orkeySet().
-