com.levigo.util.base.glazedlists
Class PopularityList<E>

java.lang.Object
  extended by com.levigo.util.base.glazedlists.AbstractEventList<E>
      extended by com.levigo.util.base.glazedlists.TransformedList<E,E>
          extended by com.levigo.util.base.glazedlists.PopularityList<E>
All Implemented Interfaces:
ListEventListener<E>, EventList<E>, Iterable<E>, Collection<E>, EventListener, 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.

Overview
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

Field Summary
 
Fields inherited from class com.levigo.util.base.glazedlists.TransformedList
source
 
Fields inherited from class com.levigo.util.base.glazedlists.AbstractEventList
publisher, readWriteLock, updates
 
Constructor Summary
PopularityList(EventList<E> source)
          Creates a new PopularityList that provides frequency-ranking for the specified EventList.
PopularityList(EventList<E> source, Comparator<E> uniqueComparator)
          Creates a new PopularityList that provides frequency-ranking for the specified EventList.
 
Method Summary
static
<E extends Comparable<? super E>>
PopularityList<E>
create(EventList<E> source)
          Creates a new PopularityList that provides frequency-ranking for the specified EventList.
 void dispose()
          Releases the resources consumed by this TransformedList so that it may eventually be garbage collected.
protected  boolean isWritable()
          Gets whether the source EventList is writable via this API.
 void listChanged(ListEvent<E> listChanges)
          When the underlying list changes, this notification allows the object to repaint itself or update itself as necessary.
 
Methods inherited from class com.levigo.util.base.glazedlists.TransformedList
add, addAll, clear, get, getSourceIndex, remove, removeAll, retainAll, set, size
 
Methods inherited from class com.levigo.util.base.glazedlists.AbstractEventList
add, addAll, addListEventListener, contains, containsAll, equals, getPublisher, getReadWriteLock, hashCode, indexOf, isEmpty, iterator, lastIndexOf, listIterator, listIterator, remove, removeListEventListener, subList, toArray, toArray, toString
 
Methods inherited from class java.lang.Object
clone, finalize, getClass, notify, notifyAll, wait, wait, wait
 

Constructor Detail

PopularityList

public PopularityList(EventList<E> source)
Creates a new PopularityList that provides frequency-ranking for the specified EventList. All elements of the source EventList must implement Comparable.

Usage of factory method create(EventList) is preferable.


PopularityList

public PopularityList(EventList<E> source,
                      Comparator<E> uniqueComparator)
Creates a new PopularityList that provides frequency-ranking for the specified EventList.

Parameters:
uniqueComparator - Comparator used to determine equality
Method Detail

create

public static <E extends Comparable<? super E>> PopularityList<E> create(EventList<E> source)
Creates a new PopularityList that provides frequency-ranking for the specified EventList. All elements of the source EventList must implement Comparable.


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>

dispose

public void dispose()
Releases the resources consumed by this TransformedList so that it may eventually be garbage collected.

A TransformedList will be garbage collected without a call to TransformedList.dispose(), but not before its source EventList is garbage collected. By calling TransformedList.dispose(), you allow the TransformedList to be garbage collected before its source EventList. This is necessary for situations where a TransformedList is short-lived but its source EventList is long-lived.

Warning: It is an error to call any method on a TransformedList after it has been disposed.

Specified by:
dispose in interface EventList<E>
Overrides:
dispose in class TransformedList<E,E>


Copyright © 1995-2020 levigo holding gmbh. All Rights Reserved.