ImmutableTableFactory { public static <R, C, V> ImmutableTable<R, C, V> createWithColumns( Map<? extends R, ? extends V> baseMap, Collection<? extends C> columns) { ImmutableTable.Builder<R, C, V> tableBuilder = ImmutableTable.builder(); columns.forEach(column -> baseMap.forEach((r, v) -> tableBuilder.put(r, column, v))); return tableBuilder.build(); }  static ImmutableTable<M, N, W> create(
            Table<R, C, V> baseTable,
            Function<? super R, ? extends M> rowMapper,
            Function<? super C, ? extends N> columnMapper,
            Function<? super V, ? extends W> valueMapper); static ImmutableTable<R, C, W> create(
            Table<? extends R, ? extends C, V> baseTable,
            Function<? super V, ? extends W> valueMapper); static ImmutableTable<R, C, V> create(
            Table<? extends R, ? extends C, ?> baseTable,
            BiFunction<? super R, ? super C, ? extends V> newValueCalculator); static ImmutableTable<R, C, V> createWithRows(
            Map<? extends C, ? extends V> baseMap,
            Collection<? extends R> rows); static ImmutableTable<R, C, V> createWithColumns(
            Map<? extends R, ? extends V> baseMap,
            Collection<? extends C> columns); static ImmutableTable<R, C, V> create(
            Collection<? extends R> rowKeys,
            Collection<? extends C> columnKeys,
            BiFunction<? super R, ? super C, ? extends V> valueCreator); static ImmutableTable<R, C, V> create(
            Collection<? extends R> rowKeys,
            Collection<? extends C> columnKeys,
            Supplier<? extends V> valueSupplier);  }
@Test void testCreateFromMapAndSingleColumn() { ImmutableTable<Integer, String, Double> outputTable = ImmutableTableFactory.createWithColumns( baseMap, ImmutableSet.of(FIRST_ROW)); Assertions.assertEquals(2, outputTable.size()); Assertions.assertEquals(0.0, outputTable.get(0, FIRST_ROW), EPSILON); Assertions.assertEquals(0.1, outputTable.get(1, FIRST_ROW), EPSILON); }