pri*_*ain 2 java list java-8 java-stream
我有一个list List<String>(list1)和一个函数Integer foo(String s).使用Java 8的强大功能我希望通过应用于每个项目来转换list1为a .以下代码有效,但有一点问题:List<Integer>foolist1
List<Integer> list2 = list1.stream().mapToInt(s -> foo(s)).boxed().collect(Collectors.toList());
Run Code Online (Sandbox Code Playgroud)
当foo回报null的一些元素list1一个NullPointerException被抛出.另外,我的解决方案看起来有点不方便.那么有更好的吗?
如果你将它映射到一个Integer,我看不到需要使用mapToInt然后使用boxed.
相反,您可以简单地使用map然后filter排除空值.
List<Integer> list2 =
list1.stream()
.map(s -> foo(s))
.filter(Objects::nonNull)
.collect(Collectors.toList());
Run Code Online (Sandbox Code Playgroud)
如果要将空值保留在列表中,只需删除 filter
List<Integer> list2 =
list1.stream()
.map(s -> foo(s))
.collect(Collectors.toList());
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
106 次 |
| 最近记录: |