public class Segment extends Object implements Comparable<Segment>
Modifier and Type | Field and Description |
---|---|
static Segment[] |
EMPTY_SEGMENTS |
static Segment |
ROOT_SEGMENT
Represents the Segment that matches against all input, but can be split to start processing elements in parallel.
|
Modifier and Type | Method and Description |
---|---|
int |
compareTo(Segment that) |
static Segment[] |
computeSegments(int... segments)
Compute the
Segment 's from a given list of segmentId's. |
boolean |
equals(Object o) |
int |
getMask()
Getter for the segment mask.
|
int |
getSegmentId()
Getter for the segment identifier.
|
int |
hashCode() |
boolean |
isMergeableWith(Segment other)
Indicates whether this segment can be merged with the given
other segment. |
boolean |
matches(int value)
Returns
true when the mask applied to the given value, matches the segment id. |
boolean |
matches(Object value)
Indicates whether the given
value matches this segment. |
int |
mergeableSegmentId()
Returns the
segmentId of the segment this one can be merged with |
Segment |
mergedWith(Segment other)
Calculates the Segment that represents the merger of this segment with the given
other segment. |
Segment[] |
split()
Returns an array with two
segments with a corresponding mask .The first entry contains the original segmentId , with the newly calculated mask. |
static List<Segment> |
splitBalanced(Segment segment,
int numberOfTimes)
Split a given
Segment n-times in round robin fashion. |
String |
toString() |
public static final Segment ROOT_SEGMENT
public static final Segment[] EMPTY_SEGMENTS
public static Segment[] computeSegments(int... segments)
Segment
's from a given list of segmentId's.segments
- The segment id's for which to compute Segments.Segment
public static List<Segment> splitBalanced(Segment segment, int numberOfTimes)
Segment
n-times in round robin fashion.
public Segment mergedWith(Segment other)
other
segment.other
- the segment to merge this one withpublic int mergeableSegmentId()
segmentId
of the segment this one can be merged withsegmentId
of the segment this one can be merged withpublic boolean isMergeableWith(Segment other)
other
segment.
Two segments can be merged when their mask is identical, and the only difference in SegmentID is in the first 1-bit of their mask.
other
- the Segment to verify mergeability fortrue
if the segments can be merged, otherwise false
public int getSegmentId()
public int getMask()
public boolean matches(int value)
true
when the mask applied to the given value, matches the segment id.value
- The value to be tested.true
when matching this segment.public boolean matches(Object value)
value
matches this segment. A value matches when the hashCode of a value,
after applying this segments mask, equals to this segment ID.value
- The value to verify against.true
if the given value matches this segment, otherwise false
public Segment[] split()
segments with a corresponding mask
.segmentId
, with the newly calculated mask. (Simple left shift, adding a '1' as LSB).
The 2nd entry is a new segmentId
with the same derived mask.
Callers must ensure that either the two returned Segments are used, or the instance from which they are derived, but not both.
Segment
's.public int compareTo(Segment that)
compareTo
in interface Comparable<Segment>
Copyright © 2010–2018. All rights reserved.