Java列表列出项目值

时间:2015-07-03 08:50:37

标签: java list guava apache-commons

我有一个List例子,我想调用它们的函数并列出返回的答案

final List<String> sources = new ArrayList<>();
// initialize
final List<Integer> answers = new ArrayList<>();
for(final String source : sources)
    answers.add(calculate(source));

GoogleGuavaApacheCommons中是否有任何标准功能可以使用它代替这些杂乱的代码

喜欢(示例目的):

final List<String> answers = Lists.calculate(sources, new CalculateListener(..));

为了便于理解:JavaScript中的UnderscoreJs有一个方法map我希望在java GoogleGuavaApacheCommons中存在类似的内容

1 个答案:

答案 0 :(得分:3)

您可以使用Function界面和Iterables类进行游戏。

从我的示例中可以看出,您正在尝试转换 计算的源,因此代码看起来像是:

Function<String, String> transformer = new Function<String, String>() {
    public String apply(String source) {
        return calculate(source);
    }
};
Iterable<String> calculatedSources = Iterables.transform(sources, transformer);
List<String> calculatedSourcesAsAList = Lists.newArrayList(calculatedSources);

作为旁注,Java8的Stream功能非常清楚地介绍了这种常见的操作类型,您必须将映射源到计算的源,然后收集结果。而且它只是一个单行:

sources.stream().map(source -> calculate(source)).collect(Collectors.toList());