public class SetUniqueList<E> extends AbstractSerializableListDecorator<E>
List to ensure that no duplicates are present much
like a Set.
The List interface makes certain assumptions/requirements. This
implementation breaks these in certain ways, but this is merely the result of
rejecting duplicates. Each violation is explained in the method, but it
should not affect you. Bear in mind that Sets require immutable objects to
function correctly.
The ListOrderedSet
class provides an alternative approach, by wrapping an existing Set and
retaining insertion order in the iterator.
This class is Serializable from Commons Collections 3.1.
| Modifier | Constructor and Description |
|---|---|
protected |
SetUniqueList(List<E> list,
Set<E> set)
Constructor that wraps (not copies) the List and specifies the set to use.
|
| Modifier and Type | Method and Description |
|---|---|
boolean |
add(E object)
Adds an element to the list if it is not already present.
|
void |
add(int index,
E object)
Adds an element to a specific index in the list if it is not already
present.
|
boolean |
addAll(Collection<? extends E> coll)
Adds a collection of objects to the end of the list avoiding duplicates.
|
boolean |
addAll(int index,
Collection<? extends E> coll)
Adds a collection of objects a specific index in the list avoiding
duplicates.
|
Set<E> |
asSet()
Gets an unmodifiable view as a Set.
|
void |
clear() |
boolean |
contains(Object object) |
boolean |
containsAll(Collection<?> coll) |
protected Set<E> |
createSetBasedOnList(Set<E> set,
List<E> list)
|
Iterator<E> |
iterator() |
ListIterator<E> |
listIterator() |
ListIterator<E> |
listIterator(int index) |
E |
remove(int index) |
boolean |
remove(Object object) |
boolean |
removeAll(Collection<?> coll) |
boolean |
retainAll(Collection<?> coll) |
E |
set(int index,
E object)
Sets the value at the specified index avoiding duplicates.
|
static <E> SetUniqueList<E> |
setUniqueList(List<E> list)
Factory method to create a SetList using the supplied list to retain order.
|
List<E> |
subList(int fromIndex,
int toIndex) |
decorated, get, indexOf, lastIndexOfequals, hashCode, isEmpty, setCollection, size, toArray, toArray, toStringprotected SetUniqueList(List<E> list, Set<E> set)
The set and list must both be correctly initialised to the same elements.
set - the set to decorate, must not be nulllist - the list to decorate, must not be nullIllegalArgumentException - if set or list is nullpublic static <E> SetUniqueList<E> setUniqueList(List<E> list)
If the list contains duplicates, these are removed (first indexed one
kept). A HashSet is used for the set behaviour.
E - the element typelist - the list to decorate, must not be nullSetUniqueListIllegalArgumentException - if list is nullpublic boolean add(E object)
(Violation) The List interface requires that this
method returns true always. However this class may return
false because of the Set behaviour.
add in interface Collection<E>add in interface List<E>add in class AbstractCollectionDecorator<E>object - the object to addpublic void add(int index, E object)
(Violation) The List interface makes the assumption
that the element is always inserted. This may not happen with this
implementation.
public boolean addAll(Collection<? extends E> coll)
Only elements that are not already in this list will be added, and duplicates from the specified collection will be ignored.
(Violation) The List interface makes the assumption
that the elements are always inserted. This may not happen with this
implementation.
addAll in interface Collection<E>addAll in interface List<E>addAll in class AbstractCollectionDecorator<E>coll - the collection to add in iterator orderpublic boolean addAll(int index, Collection<? extends E> coll)
Only elements that are not already in this list will be added, and duplicates from the specified collection will be ignored.
(Violation) The List interface makes the assumption
that the elements are always inserted. This may not happen with this
implementation.
public E set(int index, E object)
The object is set into the specified index. Afterwards, any previous duplicate is removed. If the object is not already in the list then a normal set occurs. If it is present, then the old version is removed.
public boolean remove(Object object)
remove in interface Collection<E>remove in interface List<E>remove in class AbstractCollectionDecorator<E>public boolean removeAll(Collection<?> coll)
removeAll in interface Collection<E>removeAll in interface List<E>removeAll in class AbstractCollectionDecorator<E>public boolean retainAll(Collection<?> coll)
retainAll in interface Collection<E>retainAll in interface List<E>retainAll in class AbstractCollectionDecorator<E>public void clear()
clear in interface Collection<E>clear in interface List<E>clear in class AbstractCollectionDecorator<E>public boolean contains(Object object)
contains in interface Collection<E>contains in interface List<E>contains in class AbstractCollectionDecorator<E>public boolean containsAll(Collection<?> coll)
containsAll in interface Collection<E>containsAll in interface List<E>containsAll in class AbstractCollectionDecorator<E>public ListIterator<E> listIterator()
listIterator in interface List<E>listIterator in class AbstractListDecorator<E>public ListIterator<E> listIterator(int index)
listIterator in interface List<E>listIterator in class AbstractListDecorator<E>public List<E> subList(int fromIndex, int toIndex)
NOTE: from 4.0, an unmodifiable list will be returned, as changes to the subList can invalidate the parent list.
Copyright © 2001–2013 The Apache Software Foundation. All rights reserved.