guava/src/com/google/common/collect/ImmutableTable.java
public static <T, R, C, V> Collector<T, ?, ImmutableTable<R, C, V>> toImmutableTable(
      Function<? super T, ? extends R> rowFunction,
      Function<? super T, ? extends C> columnFunction,
      Function<? super T, ? extends V> valueFunction) {
    checkNotNull(rowFunction, "rowFunction");
    checkNotNull(columnFunction, "columnFunction");
    checkNotNull(valueFunction, "valueFunction");
    return Collector.of(
        () -> new ImmutableTable.Builder<R, C, V>(),
        (builder, t) ->
            builder.put(rowFunction.apply(t), columnFunction.apply(t), valueFunction.apply(t)),
        (b1, b2) -> b1.combine(b2),
        b -> b.build());
  }
public static <T, R, C, V> Collector<T, ?, ImmutableTable<R, C, V>> toImmutableTable(
      Function<? super T, ? extends R> rowFunction,
      Function<? super T, ? extends C> columnFunction,
      Function<? super T, ? extends V> valueFunction) {
    checkNotNull(rowFunction, "rowFunction");
    checkNotNull(columnFunction, "columnFunction");
    checkNotNull(valueFunction, "valueFunction");
    return Collector.of(
        () -> new ImmutableTable.Builder<R, C, V>(),
        (builder, t) ->
            builder.put(rowFunction.apply(t), columnFunction.apply(t), valueFunction.apply(t)),
        (b1, b2) -> b1.combine(b2),
        b -> b.build());
  }
public static < T , R , C , V > Collector < T , ? , ImmutableTable < R , C , V > > toImmutableTable ( Function < ? super T , ? extends R > rowFunction , Function < ? super T , ? extends C > columnFunction , Function < ? super T , ? extends V > valueFunction ) { checkNotNull ( rowFunction , "rowFunction" ) ; checkNotNull ( columnFunction , "columnFunction" ) ; checkNotNull ( valueFunction , "valueFunction" ) ; return Collector . of ( ( ) -> new ImmutableTable . Builder < R , C , V > ( ) , ( builder , t ) -> builder . put ( rowFunction . apply ( t ) , columnFunction . apply ( t ) , valueFunction . apply ( t ) ) , ( b1 , b2 ) -> b1 . combine ( b2 ) , b -> b . build ( ) ) ; }
Returns a {@code Collector} that accumulates elements into an {@code ImmutableTable}. Each
input element is mapped to one cell in the returned table, with the rows, columns, and values
generated by applying the specified functions.

<p>The returned {@code Collector} will throw a {@code NullPointerException} at collection time
if the row, column, or value functions return null on any input.

@since 21.0
Returns a { @code Collector } that accumulates elements into an { @code ImmutableTable } . Each input element is mapped to one cell in the returned table with the rows columns and values generated by applying the specified functions .