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.ObjectA 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<T> valueSupplier)static <T> java.util.stream.Stream<Pair<java.lang.Integer,T>>indexedPairStream(int from, int to, java.util.function.IntFunction<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<T> valueSupplier, java.util.function.IntUnaryOperator rebaser, java.util.function.IntFunction<I> indexTransformer)static <T> java.util.stream.Stream<Pair<java.lang.Integer,T>>indexedPairStream(java.lang.Iterable<T> iterable)static <I,T>
java.util.stream.Stream<Pair<I,T>>indexedPairStream(java.lang.Iterable<T> iterable, java.util.function.IntFunction<I> indexTransformer)static <T> java.util.stream.Stream<Pair<java.lang.Integer,T>>indexedPairStream(java.lang.Iterable<T> iterable, java.util.function.IntUnaryOperator rebaser)static <I,T>
java.util.stream.Stream<Pair<I,T>>indexedPairStream(java.lang.Iterable<T> iterable, java.util.function.IntUnaryOperator rebaser, java.util.function.IntFunction<I> indexTransformer)static <T> java.util.stream.Stream<Pair<java.lang.Integer,T>>indexedPairStream(java.util.stream.Stream<T> stream)static <I,T>
java.util.stream.Stream<Pair<I,T>>indexedPairStream(java.util.stream.Stream<T> stream, java.util.function.IntFunction<I> indexTransformer)static <T> java.util.stream.Stream<Pair<java.lang.Integer,T>>indexedPairStream(java.util.stream.Stream<T> stream, java.util.function.IntUnaryOperator rebaser)static <I,T>
java.util.stream.Stream<Pair<I,T>>indexedPairStream(java.util.stream.Stream<T> stream, java.util.function.IntUnaryOperator rebaser, java.util.function.IntFunction<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<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<I> indexTransformer)static <T> java.util.stream.Stream<Pair<T,java.lang.Integer>>pairRange(T value, int from, int to)Creates aStreamofPairs 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 aStreamofPairs composed of a given fixed value and an integer in the given range.static <A,B>
java.util.stream.Collector<? super Pair<A,B>,?,java.util.Map<A,B>>pairsToMap()ACollectorthat produces aMapwhose key is fieldaand value fieldb.static <T,U>
java.util.stream.Stream<Pair<T,U>>pairStream(T value, java.util.stream.Stream<U> stream)Creates aStreamofPairs 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<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> java.util.stream.Stream<Pair<T,java.lang.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> java.util.stream.Stream<Pair<T,java.lang.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
@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 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> java.util.stream.Stream<Pair<I,T>> indexedPairStream(@Nonnull T[] array, @Nonnull java.util.function.IntFunction<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> java.util.stream.Stream<Pair<I,T>> indexedPairStream(@Nonnull T[] array, @Nonnull java.util.function.IntUnaryOperator rebaser, @Nonnull java.util.function.IntFunction<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> java.util.stream.Stream<Pair<java.lang.Integer,T>> indexedPairStream(@Nonnull java.lang.Iterable<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<T> iterable, @Nonnull java.util.function.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> java.util.stream.Stream<Pair<I,T>> indexedPairStream(@Nonnull java.lang.Iterable<T> iterable, @Nonnull java.util.function.IntFunction<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> java.util.stream.Stream<Pair<I,T>> indexedPairStream(@Nonnull java.lang.Iterable<T> iterable, @Nonnull java.util.function.IntUnaryOperator rebaser, @Nonnull java.util.function.IntFunction<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:
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<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<T> stream, @Nonnull java.util.function.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> java.util.stream.Stream<Pair<I,T>> indexedPairStream(@Nonnull java.util.stream.Stream<T> stream, @Nonnull java.util.function.IntFunction<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> java.util.stream.Stream<Pair<I,T>> indexedPairStream(@Nonnull java.util.stream.Stream<T> stream, @Nonnull java.util.function.IntUnaryOperator rebaser, @Nonnull java.util.function.IntFunction<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:
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<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<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<T> valueSupplier, @Nonnull java.util.function.IntUnaryOperator rebaser, @Nonnull java.util.function.IntFunction<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:
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<? super Pair<A,B>,?,java.util.Map<A,B>> 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
-
-