Class ListOrderedSet

  • All Implemented Interfaces:
    java.io.Serializable, java.lang.Iterable, java.util.Collection, java.util.Set

    public class ListOrderedSet
    extends AbstractSerializableSetDecorator
    implements java.util.Set
    Decorates another Set to ensure that the order of addition is retained and used by the iterator.

    If an object is added to the set for a second time, it will remain in the original position in the iteration. The order can be observed from the set via the iterator or toArray methods.

    The ListOrderedSet also has various useful direct methods. These include many from List, such as get(int), remove(int) and indexOf(int). An unmodifiable List view of the set can be obtained via asList().

    This class cannot implement the List interface directly as various interface methods (notably equals/hashCode) are incompatable with a set.

    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) $
    See Also:
    Serialized Form
    • Nested Class Summary

      Nested Classes 
      Modifier and Type Class Description
      (package private) static class  ListOrderedSet.OrderedSetIterator
      Internal iterator handle remove.
    • Constructor Summary

      Constructors 
      Modifier Constructor Description
        ListOrderedSet()
      Constructs a new empty ListOrderedSet using a HashSet and an ArrayList internally.
      protected ListOrderedSet​(java.util.Set set)
      Constructor that wraps (not copies).
      protected ListOrderedSet​(java.util.Set set, java.util.List list)
      Constructor that wraps (not copies) the Set and specifies the list to use.
    • Method Summary

      All Methods Static Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      void add​(int index, java.lang.Object object)  
      boolean add​(java.lang.Object object)  
      boolean addAll​(int index, java.util.Collection coll)  
      boolean addAll​(java.util.Collection coll)  
      java.util.List asList()
      Gets an unmodifiable view of the order of the Set.
      void clear()  
      static ListOrderedSet decorate​(java.util.List list)
      Factory method to create an ordered set using the supplied list to retain order.
      static ListOrderedSet decorate​(java.util.Set set)
      Factory method to create an ordered set.
      static ListOrderedSet decorate​(java.util.Set set, java.util.List list)
      Factory method to create an ordered set specifying the list and set to use.
      java.lang.Object get​(int index)  
      int indexOf​(java.lang.Object object)  
      java.util.Iterator iterator()  
      java.lang.Object remove​(int index)  
      boolean remove​(java.lang.Object object)  
      boolean removeAll​(java.util.Collection coll)  
      boolean retainAll​(java.util.Collection coll)  
      java.lang.Object[] toArray()  
      java.lang.Object[] toArray​(java.lang.Object[] a)  
      java.lang.String toString()
      Uses the underlying List's toString so that order is achieved.
      • Methods inherited from class java.lang.Object

        clone, finalize, getClass, notify, notifyAll, wait, wait, wait
      • Methods inherited from interface java.util.Collection

        parallelStream, removeIf, stream, toArray
      • Methods inherited from interface java.lang.Iterable

        forEach
      • Methods inherited from interface java.util.Set

        contains, containsAll, equals, hashCode, isEmpty, size, spliterator
    • Field Detail

      • serialVersionUID

        private static final long serialVersionUID
        Serialization version
        See Also:
        Constant Field Values
      • setOrder

        protected final java.util.List setOrder
        Internal list to hold the sequence of objects
    • Constructor Detail

      • ListOrderedSet

        public ListOrderedSet()
        Constructs a new empty ListOrderedSet using a HashSet and an ArrayList internally.
        Since:
        Commons Collections 3.1
      • ListOrderedSet

        protected ListOrderedSet​(java.util.Set set)
        Constructor that wraps (not copies).
        Parameters:
        set - the set to decorate, must not be null
        Throws:
        java.lang.IllegalArgumentException - if set is null
      • ListOrderedSet

        protected ListOrderedSet​(java.util.Set set,
                                 java.util.List list)
        Constructor that wraps (not copies) the Set and specifies the list to use.

        The set and list must both be correctly initialised to the same elements.

        Parameters:
        set - the set to decorate, must not be null
        list - the list to decorate, must not be null
        Throws:
        java.lang.IllegalArgumentException - if set or list is null
    • Method Detail

      • decorate

        public static ListOrderedSet decorate​(java.util.Set set,
                                              java.util.List list)
        Factory method to create an ordered set specifying the list and set to use.

        The list and set must both be empty.

        Parameters:
        set - the set to decorate, must be empty and not null
        list - the list to decorate, must be empty and not null
        Throws:
        java.lang.IllegalArgumentException - if set or list is null
        java.lang.IllegalArgumentException - if either the set or list is not empty
        Since:
        Commons Collections 3.1
      • decorate

        public static ListOrderedSet decorate​(java.util.Set set)
        Factory method to create an ordered set.

        An ArrayList is used to retain order.

        Parameters:
        set - the set to decorate, must not be null
        Throws:
        java.lang.IllegalArgumentException - if set is null
      • decorate

        public static ListOrderedSet decorate​(java.util.List list)
        Factory method to create an ordered set using the supplied list to retain order.

        A HashSet is used for the set behaviour.

        NOTE: If the list contains duplicates, the duplicates are removed, altering the specified list.

        Parameters:
        list - the list to decorate, must not be null
        Throws:
        java.lang.IllegalArgumentException - if list is null
      • asList

        public java.util.List asList()
        Gets an unmodifiable view of the order of the Set.
        Returns:
        an unmodifiable list view
      • clear

        public void clear()
        Specified by:
        clear in interface java.util.Collection
        Specified by:
        clear in interface java.util.Set
        Overrides:
        clear in class AbstractCollectionDecorator
      • iterator

        public java.util.Iterator iterator()
        Specified by:
        iterator in interface java.util.Collection
        Specified by:
        iterator in interface java.lang.Iterable
        Specified by:
        iterator in interface java.util.Set
        Overrides:
        iterator in class AbstractCollectionDecorator
      • add

        public boolean add​(java.lang.Object object)
        Specified by:
        add in interface java.util.Collection
        Specified by:
        add in interface java.util.Set
        Overrides:
        add in class AbstractCollectionDecorator
      • addAll

        public boolean addAll​(java.util.Collection coll)
        Specified by:
        addAll in interface java.util.Collection
        Specified by:
        addAll in interface java.util.Set
        Overrides:
        addAll in class AbstractCollectionDecorator
      • remove

        public boolean remove​(java.lang.Object object)
        Specified by:
        remove in interface java.util.Collection
        Specified by:
        remove in interface java.util.Set
        Overrides:
        remove in class AbstractCollectionDecorator
      • removeAll

        public boolean removeAll​(java.util.Collection coll)
        Specified by:
        removeAll in interface java.util.Collection
        Specified by:
        removeAll in interface java.util.Set
        Overrides:
        removeAll in class AbstractCollectionDecorator
      • retainAll

        public boolean retainAll​(java.util.Collection coll)
        Specified by:
        retainAll in interface java.util.Collection
        Specified by:
        retainAll in interface java.util.Set
        Overrides:
        retainAll in class AbstractCollectionDecorator
      • toArray

        public java.lang.Object[] toArray()
        Specified by:
        toArray in interface java.util.Collection
        Specified by:
        toArray in interface java.util.Set
        Overrides:
        toArray in class AbstractCollectionDecorator
      • toArray

        public java.lang.Object[] toArray​(java.lang.Object[] a)
        Specified by:
        toArray in interface java.util.Collection
        Specified by:
        toArray in interface java.util.Set
        Overrides:
        toArray in class AbstractCollectionDecorator
      • get

        public java.lang.Object get​(int index)
      • indexOf

        public int indexOf​(java.lang.Object object)
      • add

        public void add​(int index,
                        java.lang.Object object)
      • addAll

        public boolean addAll​(int index,
                              java.util.Collection coll)
      • remove

        public java.lang.Object remove​(int index)
      • toString

        public java.lang.String toString()
        Uses the underlying List's toString so that order is achieved. This means that the decorated Set's toString is not used, so any custom toStrings will be ignored.
        Overrides:
        toString in class AbstractCollectionDecorator