Class IndexedCollection<K,C>
java.lang.Object
org.apache.commons.collections4.collection.AbstractCollectionDecorator<C>
org.apache.commons.collections4.collection.IndexedCollection<K,C>
- Type Parameters:
K
- the type of object in the index.C
- the type of object in the collection.
- All Implemented Interfaces:
Serializable
,Iterable<C>
,Collection<C>
An IndexedCollection is a Map-like view onto a Collection. It accepts a
keyTransformer to define how the keys are converted from the values.
Modifications made to this decorator modify the index as well as the
decorated Collection
. However, modifications to the underlying
Collection
will not update the index and it will get out of sync.
If modification of the decorated Collection
is unavoidable, then a
call to reindex()
will update the index to the current contents of
the Collection
.
- Since:
- 4.0
- See Also:
-
Constructor Summary
ConstructorDescriptionIndexedCollection
(Collection<C> coll, Transformer<C, K> keyTransformer, MultiMap<K, C> map, boolean uniqueIndex) Create aIndexedCollection
. -
Method Summary
Modifier and TypeMethodDescriptionboolean
boolean
addAll
(Collection<? extends C> coll) void
clear()
boolean
boolean
containsAll
(Collection<?> coll) Gets the element associated with the given key.static <K,
C> IndexedCollection <K, C> nonUniqueIndexedCollection
(Collection<C> coll, Transformer<C, K> keyTransformer) Create anIndexedCollection
for a non-unique index.void
reindex()
Clears the index and re-indexes the entire decoratedCollection
.boolean
boolean
removeAll
(Collection<?> coll) boolean
boolean
retainAll
(Collection<?> coll) static <K,
C> IndexedCollection <K, C> uniqueIndexedCollection
(Collection<C> coll, Transformer<C, K> keyTransformer) Create anIndexedCollection
for a unique index.Gets all elements associated with the given key.Methods inherited from class org.apache.commons.collections4.collection.AbstractCollectionDecorator
decorated, isEmpty, iterator, setCollection, size, toArray, toArray, toString
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
Methods inherited from interface java.util.Collection
equals, hashCode, parallelStream, spliterator, stream
-
Constructor Details
-
IndexedCollection
public IndexedCollection(Collection<C> coll, Transformer<C, K> keyTransformer, MultiMap<K, C> map, boolean uniqueIndex) Create aIndexedCollection
.- Parameters:
coll
- decoratedCollection
keyTransformer
-Transformer
for generating index keysmap
- map to use as indexuniqueIndex
- if the index shall enforce uniqueness of index keys
-
-
Method Details
-
nonUniqueIndexedCollection
public static <K,C> IndexedCollection<K,C> nonUniqueIndexedCollection(Collection<C> coll, Transformer<C, K> keyTransformer) Create anIndexedCollection
for a non-unique index.- Type Parameters:
K
- the index object type.C
- the collection type.- Parameters:
coll
- the decoratedCollection
.keyTransformer
- theTransformer
for generating index keys.- Returns:
- the created
IndexedCollection
.
-
uniqueIndexedCollection
public static <K,C> IndexedCollection<K,C> uniqueIndexedCollection(Collection<C> coll, Transformer<C, K> keyTransformer) Create anIndexedCollection
for a unique index.If an element is added, which maps to an existing key, an
IllegalArgumentException
will be thrown.- Type Parameters:
K
- the index object type.C
- the collection type.- Parameters:
coll
- the decoratedCollection
.keyTransformer
- theTransformer
for generating index keys.- Returns:
- the created
IndexedCollection
.
-
add
- Specified by:
add
in interfaceCollection<K>
- Overrides:
add
in classAbstractCollectionDecorator<C>
- Throws:
IllegalArgumentException
- if the object maps to an existing key and the index enforces a uniqueness constraint
-
addAll
- Specified by:
addAll
in interfaceCollection<K>
- Overrides:
addAll
in classAbstractCollectionDecorator<C>
-
clear
- Specified by:
clear
in interfaceCollection<K>
- Overrides:
clear
in classAbstractCollectionDecorator<C>
-
contains
Note: uses the index for fast lookup
- Specified by:
contains
in interfaceCollection<K>
- Overrides:
contains
in classAbstractCollectionDecorator<C>
-
containsAll
Note: uses the index for fast lookup
- Specified by:
containsAll
in interfaceCollection<K>
- Overrides:
containsAll
in classAbstractCollectionDecorator<C>
-
get
Gets the element associated with the given key.In case of a non-unique index, this method will return the first value associated with the given key. To retrieve all elements associated with a key, use
values(Object)
.- Parameters:
key
- key to look up- Returns:
- element found
- See Also:
-
reindex
Clears the index and re-indexes the entire decoratedCollection
. -
remove
- Specified by:
remove
in interfaceCollection<K>
- Overrides:
remove
in classAbstractCollectionDecorator<C>
-
removeAll
- Specified by:
removeAll
in interfaceCollection<K>
- Overrides:
removeAll
in classAbstractCollectionDecorator<C>
-
removeIf
- Specified by:
removeIf
in interfaceCollection<K>
- Overrides:
removeIf
in classAbstractCollectionDecorator<C>
- Since:
- 4.4
-
retainAll
- Specified by:
retainAll
in interfaceCollection<K>
- Overrides:
retainAll
in classAbstractCollectionDecorator<C>
-
values
Gets all elements associated with the given key.- Parameters:
key
- key to look up- Returns:
- a collection of elements found, or null if
contains(key) == false
-