Java Lists 列表项值

标签 java list guava apache-commons

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

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(..));

为了便于理解:UnderscoreJs 在 JavaScript 中有一个方法 map 我想要在 java GoogleGuavaApacheCommons如果存在

最佳答案

你可以玩一下 Function接口(interface)和 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());

关于Java Lists 列表项值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31202521/

相关文章:

r - 将 nls 应用于列表中的元素

java - 创建 MutableGuiceKeyToInstanceMap 的最简单方法?

java - 如何反转 map

java - 使用 Guava 从 TreeMap 中提取最后一个 x 值

java - Thread.join() 之后实际发生了什么?

java - 在 Eclipse Indigo 中注释声明托管 bean 和代码完成

Java 8 DateTimeFormatter 无法解析 "Etc/GMT"时区

java - 通过命令行参数禁用 Swing 工具提示

java - 检查列表是否包含多个元素的便捷方法

python - 从 python 整数列表中删除最大值和最小值