|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Object net.sf.collections15.collection.AbstractCollectionDecorator<E> net.sf.collections15.list.AbstractListDecorator<E> net.sf.collections15.list.AbstractSerializableListDecorator<E> net.sf.collections15.list.SetUniqueList<E>
public class SetUniqueList<E>
Decorates a 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.
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.
Field Summary | |
---|---|
protected java.util.Set<E> |
set
Internal Set to maintain uniqueness. |
Fields inherited from class net.sf.collections15.collection.AbstractCollectionDecorator |
---|
collection |
Constructor Summary | |
---|---|
protected |
SetUniqueList(java.util.List<E> list,
java.util.Set<E> set)
Constructor that wraps (not copies) the List and specifies the set to use. |
Method Summary | ||
---|---|---|
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(java.util.Collection<? extends E> coll)
Adds an element to the end of the list if it is not already present. |
|
boolean |
addAll(int index,
java.util.Collection<? extends E> coll)
Adds a collection of objects to the end of the list avoiding duplicates. |
|
java.util.Set<E> |
asSet()
Gets an unmodifiable view as a Set. |
|
void |
clear()
|
|
boolean |
contains(java.lang.Object object)
|
|
boolean |
containsAll(java.util.Collection<?> coll)
|
|
static
|
decorate(java.util.List<T> list)
Factory method to create a SetList using the supplied list to retain order. |
|
java.util.Iterator<E> |
iterator()
|
|
java.util.ListIterator<E> |
listIterator()
|
|
java.util.ListIterator<E> |
listIterator(int index)
|
|
E |
remove(int index)
|
|
boolean |
remove(java.lang.Object object)
|
|
boolean |
removeAll(java.util.Collection<?> coll)
|
|
boolean |
retainAll(java.util.Collection<?> coll)
|
|
E |
set(int index,
E object)
Sets the value at the specified index avoiding duplicates. |
|
java.util.List<E> |
subList(int fromIndex,
int toIndex)
|
Methods inherited from class net.sf.collections15.list.AbstractListDecorator |
---|
get, getList, indexOf, lastIndexOf |
Methods inherited from class net.sf.collections15.collection.AbstractCollectionDecorator |
---|
equals, getCollection, hashCode, isEmpty, size, toArray, toArray, toString |
Methods inherited from class java.lang.Object |
---|
clone, finalize, getClass, notify, notifyAll, wait, wait, wait |
Methods inherited from interface java.util.List |
---|
equals, hashCode, isEmpty, size, toArray, toArray |
Field Detail |
---|
protected final java.util.Set<E> set
Constructor Detail |
---|
protected SetUniqueList(java.util.List<E> list, java.util.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 null
java.lang.IllegalArgumentException
- if set or list is nullMethod Detail |
---|
public static <T> SetUniqueList<T> decorate(java.util.List<T> list)
If the list contains duplicates, these are removed (first indexed one kept).
A HashSet
is used for the set behaviour.
list
- the list to decorate, must not be null
java.lang.IllegalArgumentException
- if list is nullpublic java.util.Set<E> asSet()
public 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 java.util.Collection<E>
add
in interface java.util.List<E>
add
in class AbstractCollectionDecorator<E>
object
- the object to add
public 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.
add
in interface java.util.List<E>
add
in class AbstractListDecorator<E>
index
- the index to insert atobject
- the object to addpublic boolean addAll(java.util.Collection<? extends E> coll)
(Violation)
The List
interface makes the assumption that the element is
always inserted. This may not happen with this implementation.
addAll
in interface java.util.Collection<E>
addAll
in interface java.util.List<E>
addAll
in class AbstractCollectionDecorator<E>
coll
- the collection to addpublic boolean addAll(int index, java.util.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 java.util.List<E>
addAll
in class AbstractListDecorator<E>
index
- the index to insert atcoll
- the collection to add in iterator order
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 and re-added at this index
set
in interface java.util.List<E>
set
in class AbstractListDecorator<E>
index
- the index to insert atobject
- the object to set
public boolean remove(java.lang.Object object)
remove
in interface java.util.Collection<E>
remove
in interface java.util.List<E>
remove
in class AbstractCollectionDecorator<E>
public E remove(int index)
remove
in interface java.util.List<E>
remove
in class AbstractListDecorator<E>
public boolean removeAll(java.util.Collection<?> coll)
removeAll
in interface java.util.Collection<E>
removeAll
in interface java.util.List<E>
removeAll
in class AbstractCollectionDecorator<E>
public boolean retainAll(java.util.Collection<?> coll)
retainAll
in interface java.util.Collection<E>
retainAll
in interface java.util.List<E>
retainAll
in class AbstractCollectionDecorator<E>
public void clear()
clear
in interface java.util.Collection<E>
clear
in interface java.util.List<E>
clear
in class AbstractCollectionDecorator<E>
public boolean contains(java.lang.Object object)
contains
in interface java.util.Collection<E>
contains
in interface java.util.List<E>
contains
in class AbstractCollectionDecorator<E>
public boolean containsAll(java.util.Collection<?> coll)
containsAll
in interface java.util.Collection<E>
containsAll
in interface java.util.List<E>
containsAll
in class AbstractCollectionDecorator<E>
public java.util.Iterator<E> iterator()
iterator
in interface java.lang.Iterable<E>
iterator
in interface java.util.Collection<E>
iterator
in interface java.util.List<E>
iterator
in class AbstractCollectionDecorator<E>
public java.util.ListIterator<E> listIterator()
listIterator
in interface java.util.List<E>
listIterator
in class AbstractListDecorator<E>
public java.util.ListIterator<E> listIterator(int index)
listIterator
in interface java.util.List<E>
listIterator
in class AbstractListDecorator<E>
public java.util.List<E> subList(int fromIndex, int toIndex)
subList
in interface java.util.List<E>
subList
in class AbstractListDecorator<E>
|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |