# Class TupleUnion<S extends Summary>

java.lang.Object
org.apache.datasketches.tuple.TupleUnion<S>

Type Parameters:
  `S` - Type of Summary

public class TupleUnion<S extends Summary> extends Object
Compute the union of two or more generic tuple sketches or generic TupleSketches combined with ThetaSketches. A new instance represents an empty set.

## Constructor Summary

Constructors
Constructor
Description
`TupleUnion(int nomEntries, SummarySetOperations<S> summarySetOps)`
Creates new TupleUnion instance.
`TupleUnion(SummarySetOperations<S> summarySetOps)`
Creates new TupleUnion instance with instructions on how to process two summaries that overlap.

## Method Summary

Modifier and Type
Method
Description
`CompactTupleSketch<S>`
`getResult()`
Gets the result of a sequence of stateful union operations as an unordered CompactTupleSketch
`CompactTupleSketch<S>`
`getResult(boolean reset)`
Gets the result of a sequence of stateful union operations as an unordered CompactTupleSketch.
`void`
`reset()`
Resets the internal set to the initial state, which represents an empty set.
`void`
`union(ThetaSketch thetaSketch, S summary)`
Performs a stateful union of the internal set with the given ThetaSketch by combining entries using the hashes from the ThetaSketch and summary values from the given summary.
`void`
`union(TupleSketch<S> tupleSketch)`
Performs a stateful union of the internal set with the given TupleSketch.
`CompactTupleSketch<S>`
`union(TupleSketch<S> tupleSketch, ThetaSketch thetaSketch, S summary)`
Perform a stateless, pair-wise union operation between a tupleSketch and a ThetaSketch.
`CompactTupleSketch<S>`
`union(TupleSketch<S> tupleSketchA, TupleSketch<S> tupleSketchB)`
Perform a stateless, pair-wise union operation between two tuple sketches.

### Methods inherited from class Object

`equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

## Constructor Details

### TupleUnion

public TupleUnion(SummarySetOperations<S> summarySetOps)
Creates new TupleUnion instance with instructions on how to process two summaries that overlap. This will have the default nominal entries (K).

Parameters:
  `summarySetOps` - instance of SummarySetOperations

### TupleUnion

public TupleUnion(int nomEntries, SummarySetOperations<S> summarySetOps)
Creates new TupleUnion instance.

Parameters:
  `nomEntries` - nominal entries (K). Forced to the nearest power of 2 greater than given value.
  `summarySetOps` - instance of SummarySetOperations

## Method Details

### union

public CompactTupleSketch<S> union(TupleSketch<S> tupleSketchA, TupleSketch<S> tupleSketchB)
Perform a stateless, pair-wise union operation between two tuple sketches. The returned sketch will be cut back to the smaller of the two k values if required.

Nulls and empty sketches are ignored.

Parameters:
  `tupleSketchA` - The first argument
  `tupleSketchB` - The second argument
Returns:
  the result ordered CompactTupleSketch on the heap.

### union

public CompactTupleSketch<S> union(TupleSketch<S> tupleSketch, ThetaSketch thetaSketch, S summary)
Perform a stateless, pair-wise union operation between a tupleSketch and a ThetaSketch. The returned sketch will be cut back to the smaller of the two k values if required.

Nulls and empty sketches are ignored.

Parameters:
  `tupleSketch` - The first argument
  `thetaSketch` - The second argument
  `summary` - the given proxy summary for the ThetaSketch, which doesn't have one. This may not be null.
Returns:
  the result ordered CompactTupleSketch on the heap.

### union

public void union(TupleSketch<S> tupleSketch)
Performs a stateful union of the internal set with the given TupleSketch.

Parameters:
  `tupleSketch` - input tuple sketch to merge with the internal set. Nulls and empty sketches are ignored.

### union

public void union(ThetaSketch thetaSketch, S summary)
Performs a stateful union of the internal set with the given ThetaSketch by combining entries using the hashes from the ThetaSketch and summary values from the given summary.

Parameters:
  `thetaSketch` - the given ThetaSketch input. If null or empty, it is ignored.
  `summary` - the given proxy summary for the ThetaSketch, which doesn't have one. This may not be null.

### getResult

public CompactTupleSketch<S> getResult()
Gets the result of a sequence of stateful union operations as an unordered CompactTupleSketch

Returns:
  result of the stateful unions so far. The state of this operation is not reset after the result is returned.

### getResult

public CompactTupleSketch<S> getResult(boolean reset)
Gets the result of a sequence of stateful union operations as an unordered CompactTupleSketch.

Parameters:
  `reset` - If true, clears this operator to the empty state after this result is returned. Set this to false if you wish to obtain an intermediate result.
Returns:
  result of the stateful union

### reset

public void reset()
Resets the internal set to the initial state, which represents an empty set. This is only useful after sequences of stateful union operations.