Package it.tidalwave.util
Class Pair<A,B>
- java.lang.Object
-
- it.tidalwave.util.Pair<A,B>
-
@Immutable public class Pair<A,B> extends java.lang.Object
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
-
-
Constructor Summary
Constructors Constructor Description Pair()
-
Method Summary
All Methods Static Methods Concrete Methods Modifier and Type Method Description static <T> java.util.stream.Stream<Pair<java.lang.Integer,T>>
indexedPairStream(int from, int to, java.util.function.IntFunction<? extends T> valueSupplier)
static <T> java.util.stream.Stream<Pair<java.lang.Integer,T>>
indexedPairStream(int from, int to, java.util.function.IntFunction<? extends T> valueSupplier, java.util.function.IntUnaryOperator rebaser)
static <T,I>
java.util.stream.Stream<Pair<I,T>>indexedPairStream(int from, int to, java.util.function.IntFunction<? extends T> valueSupplier, java.util.function.IntUnaryOperator rebaser, java.util.function.IntFunction<? extends I> indexTransformer)
static <T> java.util.stream.Stream<Pair<java.lang.Integer,T>>
indexedPairStream(java.lang.Iterable<? extends T> iterable)
static <I,T>
java.util.stream.Stream<Pair<I,T>>indexedPairStream(java.lang.Iterable<? extends T> iterable, java.util.function.IntFunction<? extends I> indexTransformer)
static <T> java.util.stream.Stream<Pair<java.lang.Integer,T>>
indexedPairStream(java.lang.Iterable<? extends T> iterable, java.util.function.IntUnaryOperator rebaser)
static <I,T>
java.util.stream.Stream<Pair<I,T>>indexedPairStream(java.lang.Iterable<? extends T> iterable, java.util.function.IntUnaryOperator rebaser, java.util.function.IntFunction<? extends I> indexTransformer)
static <T> java.util.stream.Stream<Pair<java.lang.Integer,T>>
indexedPairStream(java.util.stream.Stream<? extends T> stream)
static <I,T>
java.util.stream.Stream<Pair<I,T>>indexedPairStream(java.util.stream.Stream<? extends T> stream, java.util.function.IntFunction<? extends I> indexTransformer)
static <T> java.util.stream.Stream<Pair<java.lang.Integer,T>>
indexedPairStream(java.util.stream.Stream<? extends T> stream, java.util.function.IntUnaryOperator rebaser)
static <I,T>
java.util.stream.Stream<Pair<I,T>>indexedPairStream(java.util.stream.Stream<? extends T> stream, java.util.function.IntUnaryOperator rebaser, java.util.function.IntFunction<? extends I> indexTransformer)
static <T> java.util.stream.Stream<Pair<java.lang.Integer,T>>
indexedPairStream(T[] array)
static <I,T>
java.util.stream.Stream<Pair<I,T>>indexedPairStream(T[] array, java.util.function.IntFunction<? extends I> indexTransformer)
static <T> java.util.stream.Stream<Pair<java.lang.Integer,T>>
indexedPairStream(T[] array, java.util.function.IntUnaryOperator rebaser)
static <T,I>
java.util.stream.Stream<Pair<I,T>>indexedPairStream(T[] array, java.util.function.IntUnaryOperator rebaser, java.util.function.IntFunction<? extends I> indexTransformer)
static <T> java.util.stream.Stream<Pair<T,java.lang.Integer>>
pairRange(T value, int from, int to)
Creates aStream
ofPair
s composed of a given fixed value and an integer in the given range.static <T> java.util.stream.Stream<Pair<T,java.lang.Integer>>
pairRangeClosed(T value, int from, int to)
Creates aStream
ofPair
s composed of a given fixed value and an integer in the given range.static <A,B>
java.util.stream.Collector<Pair<A,B>,?,java.util.Map<A,B>>pairsToMap()
ACollector
that produces aMap
whose key is fielda
and value fieldb
.static <T,U>
java.util.stream.Stream<Pair<T,U>>pairStream(T value, java.util.stream.Stream<? extends U> stream)
Creates aStream
ofPair
s composed of a given fixed value and another element taken from anotherStream
.
-
-
-
Method Detail
-
pairStream
@Nonnull public static <T,U> java.util.stream.Stream<Pair<T,U>> pairStream(@Nonnull T value, @Nonnull java.util.stream.Stream<? extends U> stream)
Creates aStream
ofPair
s 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
Stream
ofPair
s - Since:
- 3.2-ALPHA-12
-
pairRange
@Nonnull public static <T> java.util.stream.Stream<Pair<T,java.lang.Integer>> pairRange(@Nonnull T value, @Nonnegative int from, @Nonnegative int to)
Creates aStream
ofPair
s 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
Stream
ofPair
s - Since:
- 3.2-ALPHA-12
-
pairRangeClosed
@Nonnull public static <T> java.util.stream.Stream<Pair<T,java.lang.Integer>> pairRangeClosed(@Nonnull T value, @Nonnegative int from, @Nonnegative int to)
Creates aStream
ofPair
s 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
Stream
ofPair
s - Since:
- 3.2-ALPHA-12
-
indexedPairStream
@Nonnull public static <T> java.util.stream.Stream<Pair<java.lang.Integer,T>> indexedPairStream(@Nonnull T[] array)
- Type Parameters:
T
- the type of the elements- Parameters:
array
- the array- Returns:
- the stream
-
indexedPairStream
@Nonnull public static <T> java.util.stream.Stream<Pair<java.lang.Integer,T>> indexedPairStream(@Nonnull T[] array, @Nonnull java.util.function.IntUnaryOperator rebaser)
Returns aStream
out of the elements in the array, made ofPair
s(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> java.util.stream.Stream<Pair<I,T>> indexedPairStream(@Nonnull T[] array, @Nonnull java.util.function.IntFunction<? extends I> indexTransformer)
Returns aStream
out of the elements in a given array made ofPair
s(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> java.util.stream.Stream<Pair<I,T>> indexedPairStream(@Nonnull T[] array, @Nonnull java.util.function.IntUnaryOperator rebaser, @Nonnull java.util.function.IntFunction<? extends I> indexTransformer)
Returns aStream
out of the elements in the array, made ofPair
s(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> java.util.stream.Stream<Pair<java.lang.Integer,T>> indexedPairStream(@Nonnull java.lang.Iterable<? extends T> iterable)
- Type Parameters:
T
- the type of the elements- Parameters:
iterable
- the iterable- Returns:
- the stream
-
indexedPairStream
@Nonnull public static <T> java.util.stream.Stream<Pair<java.lang.Integer,T>> indexedPairStream(@Nonnull java.lang.Iterable<? extends T> iterable, @Nonnull java.util.function.IntUnaryOperator rebaser)
Returns aStream
out of the elements in a givenIterable
made ofPair
s(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> java.util.stream.Stream<Pair<I,T>> indexedPairStream(@Nonnull java.lang.Iterable<? extends T> iterable, @Nonnull java.util.function.IntFunction<? extends I> indexTransformer)
Returns aStream
out of the elements in a givenIterable
made ofPair
s(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> java.util.stream.Stream<Pair<I,T>> indexedPairStream(@Nonnull java.lang.Iterable<? extends T> iterable, @Nonnull java.util.function.IntUnaryOperator rebaser, @Nonnull java.util.function.IntFunction<? extends I> indexTransformer)
Returns aStream
out of the elements returned by an iterable, made ofPair
s(index, value)
. The index is rebased and transformed with specific functions.- Type Parameters:
T
- the type of the elementsI
- the type of the transformed index- 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> java.util.stream.Stream<Pair<java.lang.Integer,T>> indexedPairStream(@Nonnull java.util.stream.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> java.util.stream.Stream<Pair<java.lang.Integer,T>> indexedPairStream(@Nonnull java.util.stream.Stream<? extends T> stream, @Nonnull java.util.function.IntUnaryOperator rebaser)
Returns aStream
out of the elements in a givenStream
made ofPair
s(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> java.util.stream.Stream<Pair<I,T>> indexedPairStream(@Nonnull java.util.stream.Stream<? extends T> stream, @Nonnull java.util.function.IntFunction<? extends I> indexTransformer)
Returns aStream
out of the elements in a givenStream
made ofPair
s(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> java.util.stream.Stream<Pair<I,T>> indexedPairStream(@Nonnull java.util.stream.Stream<? extends T> stream, @Nonnull java.util.function.IntUnaryOperator rebaser, @Nonnull java.util.function.IntFunction<? extends I> indexTransformer)
Returns aStream
out of the elements returned by a Stream, made ofPair
s(index, value)
. The index is rebased and transformed with specific functions.- Type Parameters:
T
- the type of the elementsI
- the type of the transformed index- 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> java.util.stream.Stream<Pair<java.lang.Integer,T>> indexedPairStream(@Nonnegative int from, @Nonnegative int to, @Nonnull java.util.function.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> java.util.stream.Stream<Pair<java.lang.Integer,T>> indexedPairStream(@Nonnegative int from, @Nonnegative int to, @Nonnull java.util.function.IntFunction<? extends T> valueSupplier, @Nonnull java.util.function.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> java.util.stream.Stream<Pair<I,T>> indexedPairStream(@Nonnegative int from, @Nonnegative int to, @Nonnull java.util.function.IntFunction<? extends T> valueSupplier, @Nonnull java.util.function.IntUnaryOperator rebaser, @Nonnull java.util.function.IntFunction<? extends I> indexTransformer)
Returns aStream
out of the elements returned by a supplier, made ofPair
s(index, value)
. The index can be rebased and transformed with specific functions.- Type Parameters:
I
- the type of the transformed indexT
- 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)indexTransformer
- the transformer of the index- Returns:
- the stream
-
pairsToMap
@Nonnull public static <A,B> java.util.stream.Collector<Pair<A,B>,?,java.util.Map<A,B>> pairsToMap()
ACollector
that produces aMap
whose key is fielda
and 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
-
-