Class UniqueList<E>

  • All Implemented Interfaces:
    ListEventListener<E>, EventList<E>, java.lang.Iterable<E>, java.util.Collection<E>, java.util.EventListener, java.util.List<E>

    public final class UniqueList<E>
    extends TransformedList<E,​E>
    An EventList that shows the unique elements from its source EventList. For example, the source list {A, A, B, C, C, C, D} would be simplified to {A, B, C, D} by this UniqueList.

    Warning: This class breaks the contract required by List. See EventList for an example.

    Warning: This class is thread ready but not thread safe. See EventList for an example of thread safe code.

    EventList Overview
    Writable:yes
    Concurrency:thread ready, not thread safe
    Performance:
    Memory:N/A
    Unit Tests:N/A
    Issues: 27 34 35 45 46 55 58 114
    Author:
    Kevin Maltby, James Lemieux, Jesse Wilson
    • Constructor Detail

      • UniqueList

        public UniqueList​(EventList<E> source)
        Creates a UniqueList that determines uniqueness via the Comparable interface. All elements of the source EventList must implement Comparable.

        Usage of factory method create(EventList) is preferable.

        Parameters:
        source - the EventList containing duplicates to remove
      • UniqueList

        public UniqueList​(EventList<E> source,
                          java.util.Comparator<? super E> comparator)
        Creates a UniqueList that determines uniqueness using the specified Comparator.
        Parameters:
        source - the EventList containing duplicates to remove
        comparator - the Comparator used to determine equality
    • Method Detail

      • create

        public static <E extends java.lang.Comparable<? super E>> UniqueList<E> create​(EventList<E> source)
        Creates a UniqueList that determines uniqueness via the Comparable interface. All elements of the source EventList must implement Comparable.
        Parameters:
        source - the EventList containing duplicates to remove
      • setComparator

        public void setComparator​(java.util.Comparator<? super E> comparator)
        Change the Comparator which determines the unique elements of this List.
        Parameters:
        comparator - the Comparator used to determine groupings; null will be treated as GlazedLists.comparableComparator()
      • size

        public int size()
        Returns the number of elements in this list. If this list contains more than Integer.MAX_VALUE elements, returns Integer.MAX_VALUE.
        Specified by:
        size in interface java.util.Collection<E>
        Specified by:
        size in interface java.util.List<E>
        Overrides:
        size in class TransformedList<E,​E>
        Returns:
        the number of elements in this list.
      • getSourceIndex

        protected int getSourceIndex​(int index)
        Gets the index in the source EventList that corresponds to the specified index. More formally, returns the index such that
        this.get(i) == source.get(getSourceIndex(i)) for all legal values of i.
        Overrides:
        getSourceIndex in class TransformedList<E,​E>
      • remove

        public E remove​(int index)
        Removes the element at the specified position in this list (optional operation). Shifts any subsequent elements to the left (subtracts one from their indices). Returns the element that was removed from the list.
        Specified by:
        remove in interface java.util.List<E>
        Overrides:
        remove in class TransformedList<E,​E>
        Parameters:
        index - the index of the element to removed.
        Returns:
        the element previously at the specified position.
      • set

        public E set​(int index,
                     E value)
        Replaces the element at the specified position in this list with the specified element (optional operation).
        Specified by:
        set in interface java.util.List<E>
        Overrides:
        set in class TransformedList<E,​E>
        Parameters:
        index - index of element to replace.
        value - element to be stored at the specified position.
        Returns:
        the element previously at the specified position.
      • indexOf

        public int indexOf​(java.lang.Object element)
        Returns the index in this list of the first occurrence of the specified element, or -1 if this list does not contain this element. More formally, returns the lowest index i such that uniqueListComparator.compare(get(i), element) == 0, or -1 if there is no such index.

        Note: This is a departure from the contract for List.indexOf(java.lang.Object) since it does not guarantee that element.equals(get(i)) where i is a positive index returned from this method.

        Specified by:
        indexOf in interface java.util.List<E>
        Overrides:
        indexOf in class AbstractEventList<E>
        Parameters:
        element - the element to search for.
        Returns:
        the index in this list of the first occurrence of the specified element, or -1 if this list does not contain this element
        Throws:
        java.lang.ClassCastException - if the type of the specified element is incompatible with this list
      • isWritable

        protected boolean isWritable()
        Gets whether the source EventList is writable via this API.

        Extending classes must override this method in order to make themselves writable.

        Specified by:
        isWritable in class TransformedList<E,​E>
      • listChanged

        public void listChanged​(ListEvent<E> listChanges)
        When the underlying list changes, this notification allows the object to repaint itself or update itself as necessary.

        It is mandatory that the calling thread has obtained the write lock on the source list. This is because the calling thread will have written to the source list to cause this event. This condition guarantees that no writes can occur while the listener is handling this event. It is an error to write to the source list while processing an event.

        Specified by:
        listChanged in interface ListEventListener<E>
        Specified by:
        listChanged in class TransformedList<E,​E>
        Parameters:
        listChanges - a ListEvent describing the changes to the list
      • getCount

        public int getCount​(int index)
        Returns the number of duplicates of the value found at the specified index.
      • getCount

        public int getCount​(E value)
        Returns the number of duplicates of the specified value.
      • getAll

        public java.util.List<E> getAll​(int index)
        Returns a List of all original elements represented by the value at the given index within this UniqueList.
      • getAll

        public java.util.List<E> getAll​(E value)
        Returns a List of all original elements represented by the given value within this UniqueList.