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:
-
Nested Class Summary
Modifier and TypeClassDescriptionstatic class
The sorted partial result. -
Field Summary
Modifier and TypeFieldDescriptionprotected Comparator
<? super E> The Comparator used to order the extracted values.protected int
The maximum number of results to include in the aggregation result.protected ValueExtractor
<? super T, ? extends E> The ValueExtractor used by this aggregator.protected boolean
True 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
ConstructorDescriptionDefault 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
Modifier and TypeMethodDescriptionboolean
accumulate
(InvocableMap.Entry<? extends K, ? extends V> entry) Accumulate one entry into the result.int
A bit mask representing the set of characteristics of this aggregator.boolean
combine
(TopNAggregator.PartialResult<E> partialResult) Merge another partial result into the result.protected void
Ensure that this aggregator is initialized.E[]
Return the final result of the aggregation.Return the partial result of the aggregation.void
Restore the contents of a user type instance by reading its state using the specified PofReader object.void
Restore the contents of this object by loading the object's state from the passed DataInput object.supply()
Create a new instance of this aggregator.void
writeExternal
(PofWriter out) Save the contents of a POF user type instance by writing its state using the specified PofWriter object.void
writeExternal
(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 Details
-
m_fParallel
protected boolean m_fParallelTrue iff this aggregator is to be used in parallel. -
m_extractor
The ValueExtractor used by this aggregator. -
m_comparator
The Comparator used to order the extracted values. -
m_cResults
protected int m_cResultsThe maximum number of results to include in the aggregation result.
-
-
Constructor Details
-
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 Details
-
supply
Description copied from interface:InvocableMap.StreamingAggregator
Create a new instance of this aggregator. -
accumulate
Description copied from interface:InvocableMap.StreamingAggregator
Accumulate one entry into the result.- Specified by:
accumulate
in interfaceInvocableMap.StreamingAggregator<K,
V, T, E> - Parameters:
entry
- the entry to accumulate into the aggregation result- Returns:
true
to continue the aggregation, andfalse
to signal to the caller that the result is ready and the aggregation can be short-circuited
-
combine
Description copied from interface:InvocableMap.StreamingAggregator
Merge another partial result into the result. -
getPartialResult
Description copied from interface:InvocableMap.StreamingAggregator
Return the partial result of the aggregation.- Specified by:
getPartialResult
in interfaceInvocableMap.StreamingAggregator<K,
V, T, E> - Returns:
- the partial result of the aggregation
-
finalizeResult
Description copied from interface:InvocableMap.StreamingAggregator
Return the final result of the aggregation.- Specified by:
finalizeResult
in interfaceInvocableMap.StreamingAggregator<K,
V, T, E> - Returns:
- the final result of the aggregation
-
characteristics
public int characteristics()Description copied from interface:InvocableMap.StreamingAggregator
A bit mask representing the set of characteristics of this aggregator.By default, characteristics are a combination of
InvocableMap.StreamingAggregator.PARALLEL
andInvocableMap.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:
characteristics
in interfaceInvocableMap.StreamingAggregator<K,
V, T, E> - Returns:
- a bit mask representing the set of characteristics of this aggregator
- See Also:
-
ensureInitialized
protected void ensureInitialized()Ensure that this aggregator is initialized. -
readExternal
Description copied from interface:ExternalizableLite
Restore the contents of this object by loading the object's state from the passed DataInput object.- Specified by:
readExternal
in 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 occurs
-
writeExternal
Description copied from interface:ExternalizableLite
Save the contents of this object by storing the object's state into the passed DataOutput object.- Specified by:
writeExternal
in interfaceExternalizableLite
- Parameters:
out
- the DataOutput stream to write the state of this object to- Throws:
IOException
- if an I/O exception occurs
-
readExternal
Description copied from interface:PortableObject
Restore the contents of a user type instance by reading its state using the specified PofReader object.- Specified by:
readExternal
in interfacePortableObject
- Parameters:
in
- the PofReader from which to read the object's state- Throws:
IOException
- if an I/O error occurs
-
writeExternal
Description copied from interface:PortableObject
Save the contents of a POF user type instance by writing its state using the specified PofWriter object.- Specified by:
writeExternal
in interfacePortableObject
- Parameters:
out
- the PofWriter to which to write the object's state- Throws:
IOException
- if an I/O error occurs
-