Class Pair<A,B>

java.lang.Object
it.tidalwave.util.Pair<A,B>

@Immutable public class Pair<A,B> extends 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
  • Field Details

    • BASE_0

      public static final IntUnaryOperator BASE_0
      A base 0 index rebaser.
    • BASE_1

      public static final IntUnaryOperator BASE_1
      A base 1 index rebaser.
    • a

      @Nonnull public final A a
    • b

      @Nonnull public final B b
  • Constructor Details

    • Pair

      public Pair()
  • Method Details

    • pairStream

      @Nonnull public static <T, U> Stream<Pair<T,U>> pairStream(@Nonnull T value, @Nonnull Stream<? extends U> stream)
      Creates a Stream of Pairs composed of a given fixed value and another element taken from another Stream.
      Type Parameters:
      T - the type of the value
      U - the type of the Stream
      Parameters:
      value - the value
      stream - the Stream
      Returns:
      the Stream of Pairs
      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 a Stream of Pairs composed of a given fixed value and an integer in the given range.
      Type Parameters:
      T - the type of the value
      Parameters:
      value - the value
      from - the first value of the integer Stream (included)
      to - the last value of the integer Stream (excluded)
      Returns:
      the Stream of Pairs
      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 a Stream of Pairs composed of a given fixed value and an integer in the given range.
      Type Parameters:
      T - the type of the value
      Parameters:
      value - the value
      from - the first value of the integer Stream (included)
      to - the last value of the integer Stream (included)
      Returns:
      the Stream of Pairs
      Since:
      3.2-ALPHA-12
    • indexedPairStream

      @Nonnull public static <T> Stream<Pair<Integer,T>> indexedPairStream(@Nonnull T[] array)
      Returns a Stream out of the elements in a given array made of Pairs (index, value).
      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 a Stream out of the elements in the array, made of Pairs (index, value). The index can be rebased.
      Type Parameters:
      T - the type of the elements
      Parameters:
      array - the array
      rebaser - 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 a Stream out of the elements in a given array made of Pairs (index, value). The index is transformed with the given function.
      Type Parameters:
      I - the type of the transformed index
      T - the type of the elements
      Parameters:
      array - the array
      indexTransformer - 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 a Stream out of the elements in the array, made of Pairs (index, value). The index can be rebased and transformed with specific functions.
      Type Parameters:
      T - the type of the elements
      I - the type of the transformed index
      Parameters:
      array - the array
      rebaser - 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)
      Returns a Stream out of the elements in a given Iterable made of Pairs (index, value).
      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 a Stream out of the elements in a given Iterable made of Pairs (index, value). The index can be rebased.
      Type Parameters:
      T - the type of the elements
      Parameters:
      iterable - the iterable
      rebaser - 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 a Stream out of the elements in a given Iterable made of Pairs (index, value). The index is transformed with the given function.
      Type Parameters:
      I - the type of the transformed index
      T - the type of the elements
      Parameters:
      iterable - the iterable
      indexTransformer - 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 a Stream out of the elements returned by an iterable, made of Pairs (index, value). The index is rebased and transformed with specific functions.
      Type Parameters:
      I - the type of the transformed index
      T - the type of the elements
      Parameters:
      iterable - the iterable
      rebaser - 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)
      Returns a Stream out of the elements in a given Stream made of Pairs (index, value).
      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 a Stream out of the elements in a given Stream made of Pairs (index, value). The index can be rebased.
      Type Parameters:
      T - the type of the elements
      Parameters:
      stream - the stream
      rebaser - 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 a Stream out of the elements in a given Stream made of Pairs (index, value). The index is transformed with the given function.
      Type Parameters:
      I - the type of the transformed index
      T - the type of the elements
      Parameters:
      stream - the stream
      indexTransformer - 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 a Stream out of the elements returned by a Stream, made of Pairs (index, value). The index is rebased and transformed with specific functions.
      Type Parameters:
      I - the type of the transformed index
      T - the type of the elements
      Parameters:
      stream - the stream
      rebaser - 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)
      Returns a Stream out of the elements returned by a supplier, made of Pairs (index, value).
      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)
      Returns a Stream out of the elements returned by a supplier, made of Pairs (index, value).
      Type Parameters:
      T - the type of the elements
      Parameters:
      from - the first index (included)
      to - the last index (excluded)
      valueSupplier - the supplier of values
      rebaser - 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 a Stream out of the elements returned by a supplier, made of Pairs (index, value). The index can be rebased and transformed with specific functions.
      Type Parameters:
      T - the type of the elements
      I - the type of the transformed index
      Parameters:
      from - the first index (included)
      to - the last index (excluded)
      valueSupplier - the supplier of values
      rebaser - 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> Collector<Pair<A,B>,?,Map<A,B>> pairsToMap()
      A Collector that produces a Map whose key is field a and value field b. Use with Stream.collect(Collector).
      Type Parameters:
      A - the type of the former element of the pair
      B - 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 of Pairs.
      Type Parameters:
      A - the type of elements of the first Stream
      B - the type of elements of the second Stream
      Parameters:
      streamA - the first Stream
      streamB - the second Stream
      Returns:
      the zipped Stream
      Since:
      3.2-ALPHA-17 (since 3.2-ALPHA-12 was in StreamOperations