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:
java.io.Serializable
,java.lang.Iterable<C>
,java.util.Collection<C>
public class IndexedCollection<K,C> extends AbstractCollectionDecorator<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 underlyingCollection
will not update the index and it will get out of sync.If modification of the decorated
Collection
is unavoidable, then a call toreindex()
will update the index to the current contents of theCollection
.- Since:
- 4.0
- See Also:
- Serialized Form
-
-
Constructor Summary
Constructors Constructor Description IndexedCollection(java.util.Collection<C> coll, Transformer<C,K> keyTransformer, MultiMap<K,C> map, boolean uniqueIndex)
Create aIndexedCollection
.
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description boolean
add(C object)
boolean
addAll(java.util.Collection<? extends C> coll)
void
clear()
boolean
contains(java.lang.Object object)
boolean
containsAll(java.util.Collection<?> coll)
C
get(K key)
Get the element associated with the given key.static <K,C>
IndexedCollection<K,C>nonUniqueIndexedCollection(java.util.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
remove(java.lang.Object object)
boolean
removeAll(java.util.Collection<?> coll)
boolean
removeIf(java.util.function.Predicate<? super C> filter)
boolean
retainAll(java.util.Collection<?> coll)
static <K,C>
IndexedCollection<K,C>uniqueIndexedCollection(java.util.Collection<C> coll, Transformer<C,K> keyTransformer)
Create anIndexedCollection
for a unique index.java.util.Collection<C>
values(K key)
Get all elements associated with the given key.-
Methods inherited from class org.apache.commons.collections4.collection.AbstractCollectionDecorator
isEmpty, iterator, size, toArray, toArray, toString
-
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, wait, wait, wait
-
-
-
-
Constructor Detail
-
IndexedCollection
public IndexedCollection(java.util.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 Detail
-
uniqueIndexedCollection
public static <K,C> IndexedCollection<K,C> uniqueIndexedCollection(java.util.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
.
-
nonUniqueIndexedCollection
public static <K,C> IndexedCollection<K,C> nonUniqueIndexedCollection(java.util.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
.
-
add
public boolean add(C object)
- Specified by:
add
in interfacejava.util.Collection<K>
- Overrides:
add
in classAbstractCollectionDecorator<C>
- Throws:
java.lang.IllegalArgumentException
- if the object maps to an existing key and the index enforces a uniqueness constraint
-
addAll
public boolean addAll(java.util.Collection<? extends C> coll)
- Specified by:
addAll
in interfacejava.util.Collection<K>
- Overrides:
addAll
in classAbstractCollectionDecorator<C>
-
clear
public void clear()
- Specified by:
clear
in interfacejava.util.Collection<K>
- Overrides:
clear
in classAbstractCollectionDecorator<C>
-
contains
public boolean contains(java.lang.Object object)
Note: uses the index for fast lookup
- Specified by:
contains
in interfacejava.util.Collection<K>
- Overrides:
contains
in classAbstractCollectionDecorator<C>
-
containsAll
public boolean containsAll(java.util.Collection<?> coll)
Note: uses the index for fast lookup
- Specified by:
containsAll
in interfacejava.util.Collection<K>
- Overrides:
containsAll
in classAbstractCollectionDecorator<C>
-
get
public C get(K key)
Get 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:
values(Object)
-
values
public java.util.Collection<C> values(K key)
Get 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
-
reindex
public void reindex()
Clears the index and re-indexes the entire decoratedCollection
.
-
remove
public boolean remove(java.lang.Object object)
- Specified by:
remove
in interfacejava.util.Collection<K>
- Overrides:
remove
in classAbstractCollectionDecorator<C>
-
removeIf
public boolean removeIf(java.util.function.Predicate<? super C> filter)
- Specified by:
removeIf
in interfacejava.util.Collection<K>
- Overrides:
removeIf
in classAbstractCollectionDecorator<C>
- Since:
- 4.4
-
removeAll
public boolean removeAll(java.util.Collection<?> coll)
- Specified by:
removeAll
in interfacejava.util.Collection<K>
- Overrides:
removeAll
in classAbstractCollectionDecorator<C>
-
retainAll
public boolean retainAll(java.util.Collection<?> coll)
- Specified by:
retainAll
in interfacejava.util.Collection<K>
- Overrides:
retainAll
in classAbstractCollectionDecorator<C>
-
-