Class PopularityList<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 PopularityList<E>
    extends TransformedList<E,​E>
    An EventList that shows the unique elements from its source EventList ordered by the frequency of their appearance.

    This EventList supports all write operations.

    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:reads: O(log N), writes O(log N)
    Memory:196 bytes per element
    Unit Tests:N/A
    Issues: 104
    Author:
    Jesse Wilson
    • Constructor Detail

      • PopularityList

        public PopularityList​(EventList<E> source,
                              java.util.Comparator<E> uniqueComparator)
        Creates a new PopularityList that provides frequency-ranking for the specified EventList.
        Parameters:
        uniqueComparator - Comparator used to determine equality
    • Method Detail

      • 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