是否可以使用Java Guava将函数应用于集合?

Gar*_*all 7 java collections guava

我想使用Guava将函数应用于集合,映射等.

基本上,我需要Table单独调整行和列的大小,以便所有行和列具有相同的大小,执行如下操作:

    Table<Integer, Integer, Cell> table = HashBasedTable.create();
    Maps.transformValues(table.columnMap(), new ResizeFunction(BlockDimension.WIDTH));
    Maps.transformValues(table.rowMap(), new ResizeFunction(BlockDimension.HEIGHT));

public interface Cell {
    int getSize(BlockDimension dimension);
    void setSize(BlockDimension dimension);
}
Run Code Online (Sandbox Code Playgroud)

我已经知道ResizeFunction应该是什么了.但是,我需要应用它,而不仅仅是返回一个Collection.

Sea*_*oyd 13

在Guava中,您不会转换现有列表,而是使用Iterables.transform创建一个新列表:

final List<String> list = Arrays.asList("race", "box");
final List<String> transformed =
    Lists.newArrayList(Iterables.transform(list, new Function<String, String>() {

        @Override
        public String apply(final String input) {
            return new StringBuilder().append(input).append("car").toString();
        }
    }));
System.out.println(transformed);
Run Code Online (Sandbox Code Playgroud)

输出:

[赛车,棚车]

或者,如果您不需要a List和a Collection,则可以使用转换后的实时视图:

final Collection<String> transformed =
    Collections2.transform(list, new Function<String, String>() {

        @Override
        public String apply(final String input) {
            return new StringBuilder().append(input).append("car").toString();
        }
    });
Run Code Online (Sandbox Code Playgroud)

Collection是底层视图的实时视图,因此更改list将反映在此中Collection.