Package it.tidalwave.util
Class Pair<A,B>
java.lang.Object
it.tidalwave.util.Pair<A,B>
A value object that contains a pair of values. Some factory methods allow creating pairs out of existing collections
or arrays associating an index.
- Since:
- 3.2-ALPHA-6
- Author:
- Fabrizio Giudici
- Status: draft API
-
Field Summary
FieldsModifier and TypeFieldDescriptionfinal Afinal Bstatic final IntUnaryOperatorA base 0 index rebaser.static final IntUnaryOperatorA base 1 index rebaser. -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionindexedPairStream(int from, int to, IntFunction<? extends T> valueSupplier) indexedPairStream(int from, int to, IntFunction<? extends T> valueSupplier, IntUnaryOperator rebaser) indexedPairStream(int from, int to, IntFunction<? extends T> valueSupplier, IntUnaryOperator rebaser, IntFunction<? extends I> indexTransformer) indexedPairStream(Iterable<? extends T> iterable) indexedPairStream(Iterable<? extends T> iterable, IntFunction<? extends I> indexTransformer) indexedPairStream(Iterable<? extends T> iterable, IntUnaryOperator rebaser) indexedPairStream(Iterable<? extends T> iterable, IntUnaryOperator rebaser, IntFunction<? extends I> indexTransformer) indexedPairStream(Stream<? extends T> stream) indexedPairStream(Stream<? extends T> stream, IntFunction<? extends I> indexTransformer) indexedPairStream(Stream<? extends T> stream, IntUnaryOperator rebaser) indexedPairStream(Stream<? extends T> stream, IntUnaryOperator rebaser, IntFunction<? extends I> indexTransformer) indexedPairStream(T[] array) indexedPairStream(T[] array, IntFunction<? extends I> indexTransformer) indexedPairStream(T[] array, IntUnaryOperator rebaser) indexedPairStream(T[] array, IntUnaryOperator rebaser, IntFunction<? extends I> indexTransformer) pairRange(T value, int from, int to) Creates aStreamofPairs composed of a given fixed value and an integer in the given range.pairRangeClosed(T value, int from, int to) Creates aStreamofPairs composed of a given fixed value and an integer in the given range.pairStream(T value, Stream<? extends U> stream) Zips two streams into a stream ofPairs.
-
Field Details
-
Constructor Details
-
Method Details
-
pairStream
@Nonnull public static <T,U> Stream<Pair<T,U>> pairStream(@Nonnull T value, @Nonnull Stream<? extends U> stream) Creates aStreamofPairs composed of a given fixed value and another element taken from anotherStream.- Type Parameters:
T- the type of the valueU- the type of theStream- Parameters:
value- the valuestream- theStream- Returns:
- the
StreamofPairs - Since:
- 3.2-ALPHA-12
-
pairRange
@Nonnull public static <T> Stream<Pair<T,Integer>> pairRange(@Nonnull T value, @Nonnegative int from, @Nonnegative int to) Creates aStreamofPairs composed of a given fixed value and an integer in the given range.- Type Parameters:
T- the type of the value- Parameters:
value- the valuefrom- the first value of the integerStream(included)to- the last value of the integerStream(excluded)- Returns:
- the
StreamofPairs - Since:
- 3.2-ALPHA-12
-
pairRangeClosed
@Nonnull public static <T> Stream<Pair<T,Integer>> pairRangeClosed(@Nonnull T value, @Nonnegative int from, @Nonnegative int to) Creates aStreamofPairs composed of a given fixed value and an integer in the given range.- Type Parameters:
T- the type of the value- Parameters:
value- the valuefrom- the first value of the integerStream(included)to- the last value of the integerStream(included)- Returns:
- the
StreamofPairs - Since:
- 3.2-ALPHA-12
-
indexedPairStream
- Type Parameters:
T- the type of the elements- Parameters:
array- the array- Returns:
- the stream
-
indexedPairStream
@Nonnull public static <T> Stream<Pair<Integer,T>> indexedPairStream(@Nonnull T[] array, @Nonnull IntUnaryOperator rebaser) Returns aStreamout of the elements in the array, made ofPairs(index, value). The index can be rebased.- Type Parameters:
T- the type of the elements- Parameters:
array- the arrayrebaser- the rebaser of the index (BASE_0, BASE_1 or a similar function)- Returns:
- the stream
-
indexedPairStream
@Nonnull public static <I,T> Stream<Pair<I,T>> indexedPairStream(@Nonnull T[] array, @Nonnull IntFunction<? extends I> indexTransformer) Returns aStreamout of the elements in a given array made ofPairs(index, value). The index is transformed with the given function.- Type Parameters:
I- the type of the transformed indexT- the type of the elements- Parameters:
array- the arrayindexTransformer- the transformer of the index- Returns:
- the stream
-
indexedPairStream
@Nonnull public static <T,I> Stream<Pair<I,T>> indexedPairStream(@Nonnull T[] array, @Nonnull IntUnaryOperator rebaser, @Nonnull IntFunction<? extends I> indexTransformer) Returns aStreamout of the elements in the array, made ofPairs(index, value). The index can be rebased and transformed with specific functions.- Type Parameters:
T- the type of the elementsI- the type of the transformed index- Parameters:
array- the arrayrebaser- the rebaser of the index (BASE_0, BASE_1 or a similar function)indexTransformer- the transformer of the index- Returns:
- the stream
-
indexedPairStream
@Nonnull public static <T> Stream<Pair<Integer,T>> indexedPairStream(@Nonnull Iterable<? extends T> iterable) - Type Parameters:
T- the type of the elements- Parameters:
iterable- the iterable- Returns:
- the stream
-
indexedPairStream
@Nonnull public static <T> Stream<Pair<Integer,T>> indexedPairStream(@Nonnull Iterable<? extends T> iterable, @Nonnull IntUnaryOperator rebaser) Returns aStreamout of the elements in a givenIterablemade ofPairs(index, value). The index can be rebased.- Type Parameters:
T- the type of the elements- Parameters:
iterable- the iterablerebaser- the rebaser of the index (BASE_0, BASE_1 or a similar function)- Returns:
- the stream
-
indexedPairStream
@Nonnull public static <I,T> Stream<Pair<I,T>> indexedPairStream(@Nonnull Iterable<? extends T> iterable, @Nonnull IntFunction<? extends I> indexTransformer) Returns aStreamout of the elements in a givenIterablemade ofPairs(index, value). The index is transformed with the given function.- Type Parameters:
I- the type of the transformed indexT- the type of the elements- Parameters:
iterable- the iterableindexTransformer- the transformer of the index- Returns:
- the stream
-
indexedPairStream
@Nonnull public static <I,T> Stream<Pair<I,T>> indexedPairStream(@Nonnull Iterable<? extends T> iterable, @Nonnull IntUnaryOperator rebaser, @Nonnull IntFunction<? extends I> indexTransformer) Returns aStreamout of the elements returned by an iterable, made ofPairs(index, value). The index is rebased and transformed with specific functions.- Type Parameters:
I- the type of the transformed indexT- the type of the elements- Parameters:
iterable- the iterablerebaser- the rebaser of the index (BASE_0, BASE_1 or a similar function)indexTransformer- the transformer of the index- Returns:
- the stream
-
indexedPairStream
@Nonnull public static <T> Stream<Pair<Integer,T>> indexedPairStream(@Nonnull Stream<? extends T> stream) - Type Parameters:
T- the type of the elements- Parameters:
stream- the stream- Returns:
- the stream
- Since:
- 3.2-ALPHA-12
-
indexedPairStream
@Nonnull public static <T> Stream<Pair<Integer,T>> indexedPairStream(@Nonnull Stream<? extends T> stream, @Nonnull IntUnaryOperator rebaser) Returns aStreamout of the elements in a givenStreammade ofPairs(index, value). The index can be rebased.- Type Parameters:
T- the type of the elements- Parameters:
stream- the streamrebaser- the rebaser of the index (BASE_0, BASE_1 or a similar function)- Returns:
- the stream
- Since:
- 3.2-ALPHA-12
-
indexedPairStream
@Nonnull public static <I,T> Stream<Pair<I,T>> indexedPairStream(@Nonnull Stream<? extends T> stream, @Nonnull IntFunction<? extends I> indexTransformer) Returns aStreamout of the elements in a givenStreammade ofPairs(index, value). The index is transformed with the given function.- Type Parameters:
I- the type of the transformed indexT- the type of the elements- Parameters:
stream- the streamindexTransformer- the transformer of the index- Returns:
- the stream
- Since:
- 3.2-ALPHA-12
-
indexedPairStream
@Nonnull public static <I,T> Stream<Pair<I,T>> indexedPairStream(@Nonnull Stream<? extends T> stream, @Nonnull IntUnaryOperator rebaser, @Nonnull IntFunction<? extends I> indexTransformer) Returns aStreamout of the elements returned by a Stream, made ofPairs(index, value). The index is rebased and transformed with specific functions.- Type Parameters:
I- the type of the transformed indexT- the type of the elements- Parameters:
stream- the streamrebaser- the rebaser of the index (BASE_0, BASE_1 or a similar function)indexTransformer- the transformer of the index- Returns:
- the stream
- Since:
- 3.2-ALPHA-12
-
indexedPairStream
@Nonnull public static <T> Stream<Pair<Integer,T>> indexedPairStream(@Nonnegative int from, @Nonnegative int to, @Nonnull IntFunction<? extends T> valueSupplier) - Type Parameters:
T- the type of the elements- Parameters:
from- the first index (included)to- the last index (excluded)valueSupplier- the supplier of values- Returns:
- the stream
-
indexedPairStream
@Nonnull public static <T> Stream<Pair<Integer,T>> indexedPairStream(@Nonnegative int from, @Nonnegative int to, @Nonnull IntFunction<? extends T> valueSupplier, @Nonnull IntUnaryOperator rebaser) - Type Parameters:
T- the type of the elements- Parameters:
from- the first index (included)to- the last index (excluded)valueSupplier- the supplier of valuesrebaser- the rebaser of the index (BASE_0, BASE_1 or a similar function)- Returns:
- the stream
-
indexedPairStream
@Nonnull public static <T,I> Stream<Pair<I,T>> indexedPairStream(@Nonnegative int from, @Nonnegative int to, @Nonnull IntFunction<? extends T> valueSupplier, @Nonnull IntUnaryOperator rebaser, @Nonnull IntFunction<? extends I> indexTransformer) Returns aStreamout of the elements returned by a supplier, made ofPairs(index, value). The index can be rebased and transformed with specific functions.- Type Parameters:
T- the type of the elementsI- the type of the transformed index- Parameters:
from- the first index (included)to- the last index (excluded)valueSupplier- the supplier of valuesrebaser- the rebaser of the index (BASE_0, BASE_1 or a similar function)indexTransformer- the transformer of the index- Returns:
- the stream
-
pairsToMap
ACollectorthat produces aMapwhose key is fieldaand value fieldb. Use withStream.collect(Collector).- Type Parameters:
A- the type of the former element of the pairB- the type of the latter element of the pair- Returns:
- the
Collector
-
zip
@Nonnull public static <A,B> Stream<Pair<A,B>> zip(@Nonnull Stream<? extends A> streamA, @Nonnull Stream<? extends B> streamB) Zips two streams into a stream ofPairs.
-