Package com.tangosol.util.aggregator
Class TopNAggregator<K,V,T,E>
- java.lang.Object
-
- com.tangosol.util.aggregator.TopNAggregator<K,V,T,E>
-
- Type Parameters:
K- the type of the Map entry keysV- the type of the Map entry valuesT- the type of the value to extract fromE- the type of the extracted value
- All Implemented Interfaces:
ExternalizableLite,PortableObject,InvocableMap.EntryAggregator<K,V,E[]>,InvocableMap.StreamingAggregator<K,V,TopNAggregator.PartialResult<E>,E[]>,Serializable
public class TopNAggregator<K,V,T,E> extends Object implements InvocableMap.StreamingAggregator<K,V,TopNAggregator.PartialResult<E>,E[]>, ExternalizableLite, PortableObject
TopNAggregator is a ParallelAwareAggregator that aggregates the top N extracted values into an array. The extracted values must not be null, but do not need to be unique.- Since:
- 12.1.3
- Author:
- rhl 2013.04.24
- See Also:
- Serialized Form
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static classTopNAggregator.PartialResult<E>The sorted partial result.
-
Field Summary
Fields Modifier and Type Field Description protected Comparator<? super E>m_comparatorThe Comparator used to order the extracted values.protected intm_cResultsThe maximum number of results to include in the aggregation result.protected ValueExtractor<? super T,? extends E>m_extractorThe ValueExtractor used by this aggregator.protected booleanm_fParallelTrue iff this aggregator is to be used in parallel.-
Fields inherited from interface com.tangosol.util.InvocableMap.StreamingAggregator
ALLOW_INCONSISTENCIES, BY_MEMBER, BY_PARTITION, PARALLEL, PRESENT_ONLY, RETAINS_ENTRIES, SERIAL
-
-
Constructor Summary
Constructors Constructor Description TopNAggregator()Default constructor.TopNAggregator(ValueExtractor<? super T,? extends E> extractor, Comparator<? super E> comparator, int cResults)Construct a TopNAggregator that will aggregate the top extracted values, as determined by the specified comparator.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description booleanaccumulate(InvocableMap.Entry<? extends K,? extends V> entry)Accumulate one entry into the result.intcharacteristics()A bit mask representing the set of characteristics of this aggregator.booleancombine(TopNAggregator.PartialResult<E> partialResult)Merge another partial result into the result.protected voidensureInitialized()Ensure that this aggregator is initialized.E[]finalizeResult()Return the final result of the aggregation.TopNAggregator.PartialResult<E>getPartialResult()Return the partial result of the aggregation.voidreadExternal(PofReader in)Restore the contents of a user type instance by reading its state using the specified PofReader object.voidreadExternal(DataInput in)Restore the contents of this object by loading the object's state from the passed DataInput object.InvocableMap.StreamingAggregator<K,V,TopNAggregator.PartialResult<E>,E[]>supply()Create a new instance of this aggregator.voidwriteExternal(PofWriter out)Save the contents of a POF user type instance by writing its state using the specified PofWriter object.voidwriteExternal(DataOutput out)Save the contents of this object by storing the object's state into the passed DataOutput object.-
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
-
Methods inherited from interface com.tangosol.util.InvocableMap.StreamingAggregator
accumulate, aggregate, isAllowInconsistencies, isByMember, isByPartition, isParallel, isPresentOnly, isRetainsEntries, isSerial
-
-
-
-
Field Detail
-
m_fParallel
protected boolean m_fParallel
True iff this aggregator is to be used in parallel.
-
m_extractor
protected ValueExtractor<? super T,? extends E> m_extractor
The ValueExtractor used by this aggregator.
-
m_comparator
protected Comparator<? super E> m_comparator
The Comparator used to order the extracted values.
-
m_cResults
protected int m_cResults
The maximum number of results to include in the aggregation result.
-
-
Constructor Detail
-
TopNAggregator
public TopNAggregator()
Default constructor.
-
TopNAggregator
public TopNAggregator(ValueExtractor<? super T,? extends E> extractor, Comparator<? super E> comparator, int cResults)
Construct a TopNAggregator that will aggregate the top extracted values, as determined by the specified comparator.- Parameters:
extractor- the extractorcomparator- the comparator for extracted valuescResults- the maximum number of results to return
-
-
Method Detail
-
supply
public InvocableMap.StreamingAggregator<K,V,TopNAggregator.PartialResult<E>,E[]> supply()
Description copied from interface:InvocableMap.StreamingAggregatorCreate a new instance of this aggregator.
-
accumulate
public boolean accumulate(InvocableMap.Entry<? extends K,? extends V> entry)
Description copied from interface:InvocableMap.StreamingAggregatorAccumulate one entry into the result.- Specified by:
accumulatein interfaceInvocableMap.StreamingAggregator<K,V,T,E>- Parameters:
entry- the entry to accumulate into the aggregation result- Returns:
trueto continue the aggregation, andfalseto signal to the caller that the result is ready and the aggregation can be short-circuited
-
combine
public boolean combine(TopNAggregator.PartialResult<E> partialResult)
Description copied from interface:InvocableMap.StreamingAggregatorMerge another partial result into the result.
-
getPartialResult
public TopNAggregator.PartialResult<E> getPartialResult()
Description copied from interface:InvocableMap.StreamingAggregatorReturn the partial result of the aggregation.- Specified by:
getPartialResultin interfaceInvocableMap.StreamingAggregator<K,V,T,E>- Returns:
- the partial result of the aggregation
-
finalizeResult
public E[] finalizeResult()
Description copied from interface:InvocableMap.StreamingAggregatorReturn the final result of the aggregation.- Specified by:
finalizeResultin interfaceInvocableMap.StreamingAggregator<K,V,T,E>- Returns:
- the final result of the aggregation
-
characteristics
public int characteristics()
Description copied from interface:InvocableMap.StreamingAggregatorA bit mask representing the set of characteristics of this aggregator.By default, characteristics are a combination of
InvocableMap.StreamingAggregator.PARALLELandInvocableMap.StreamingAggregator.RETAINS_ENTRIES, which is sub-optimal and should be overridden by the aggregator implementation if the aggregator does not need to retain entries (which is often the case).- Specified by:
characteristicsin interfaceInvocableMap.StreamingAggregator<K,V,T,E>- Returns:
- a bit mask representing the set of characteristics of this aggregator
- See Also:
InvocableMap.StreamingAggregator.ALLOW_INCONSISTENCIES,InvocableMap.StreamingAggregator.BY_MEMBER,InvocableMap.StreamingAggregator.BY_PARTITION,InvocableMap.StreamingAggregator.PARALLEL,InvocableMap.StreamingAggregator.PRESENT_ONLY,InvocableMap.StreamingAggregator.RETAINS_ENTRIES,InvocableMap.StreamingAggregator.SERIAL
-
ensureInitialized
protected void ensureInitialized()
Ensure that this aggregator is initialized.
-
readExternal
public void readExternal(DataInput in) throws IOException
Description copied from interface:ExternalizableLiteRestore the contents of this object by loading the object's state from the passed DataInput object.- Specified by:
readExternalin interfaceExternalizableLite- Parameters:
in- the DataInput stream to read data from in order to restore the state of this object- Throws:
IOException- if an I/O exception occursNotActiveException- if the object is not in its initial state, and therefore cannot be deserialized into
-
writeExternal
public void writeExternal(DataOutput out) throws IOException
Description copied from interface:ExternalizableLiteSave the contents of this object by storing the object's state into the passed DataOutput object.- Specified by:
writeExternalin interfaceExternalizableLite- Parameters:
out- the DataOutput stream to write the state of this object to- Throws:
IOException- if an I/O exception occurs
-
readExternal
public void readExternal(PofReader in) throws IOException
Description copied from interface:PortableObjectRestore the contents of a user type instance by reading its state using the specified PofReader object.- Specified by:
readExternalin interfacePortableObject- Parameters:
in- the PofReader from which to read the object's state- Throws:
IOException- if an I/O error occurs
-
writeExternal
public void writeExternal(PofWriter out) throws IOException
Description copied from interface:PortableObjectSave the contents of a POF user type instance by writing its state using the specified PofWriter object.- Specified by:
writeExternalin interfacePortableObject- Parameters:
out- the PofWriter to which to write the object's state- Throws:
IOException- if an I/O error occurs
-
-