java - 在 Java 中映射列表

标签 java list

在 Java 8 中,我可以使用 map 方法映射流,例如

Stream.of("Hello", "world").map(s -> s.length())

给我一​​个包含整数 [5, 5] 的流。我正在尝试对列表做同样的事情。我想到了

List<String> list = ...

list.stream().map(s -> s.length()).collect(Collectors.toList())

这有效但相当冗长。有更简洁的解决方案吗?理想情况下,列表会有类似的 map 方法,但我还没有找到。那么,还有其他选择吗?

最佳答案

As compact as possible

只需将其包装到您自己的效用函数中即可:

public <T, S> List<S> mapBy(List<T> items, Function<T, S> mapFn) {
    return items.stream().map(mapFn).collect(Collectors.toList());
}

现在你可以使用 mapBy(students, Student::getName)。没有比这更冗长的了。

请注意,只有当这是您想要进行的唯一数据突变时,这才有用。一旦您有了更多想要应用的流运算符,最好就这样做,否则您会不断创建中间列表,这是非常浪费的。

关于java - 在 Java 中映射列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53441973/

相关文章:

python - 将一个列表中的特定行附加到另一个列表

python-2.7 - map(None, some_list) 对 Python 2.7 中的一个列表有什么用处吗?

java - 使用 .NET Web 服务时将 ArrayOfStrings 转换为 JAVA 中的 String[]

java - 在 Java 中使用 KeyListener

java - 实现永久持续的 Guava 缓存

java - Ant java 任务无法在 rt.jar 中找到类,但控制台中的 java 成功(且 JAVA_HOME 已正确设置)

list - 如何在scala中按周将列表分成组

scala - Spark:RDD到列表

java - lshistory 命令没有给出子文件夹的日志?

java - JFrame 中的图像不显示