在 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/