使用Java8流,当输入整数没有输出时,映射列表
的最佳方法是什么?
简单地返回NULL?但现在我的输出列表大小将小于我的输入大小...
List<Integer> input = Arrays.asList(0,1,2,3);
List<Integer> output = input.stream()
.map(i -> {
Integer out = crazyFunction(i);
if(out == null || out.equals(0))
return null;
return Optional.of(out);
})
.collect(Collectors.toList());
我不明白为什么你(和所有的答案)把它弄得这么复杂。您有一个映射操作和一个筛选操作。所以最简单的方法就是一个接一个地应用这些操作。并且除非您的方法已经返回了optional
,否则不需要处理optional
。
input.stream().map(i -> crazyFunction(i))
.filter(out -> out!=null && !out.equals(0))
.collect(Collectors.toList());
它可以简化为
input.stream().map(context::crazyFunction)
.filter(out -> out!=null && !out.equals(0))
.collect(Collectors.toList());
但您似乎有一个更理论化的问题,即要生成什么样的列表
?一个是带有缺省值的占位符,还是具有与输入列表不同的大小。
我有以下两门课: : : 我希望进行流操作,以便: 将映射到中的 的和分别合并到和中,对于所有具有相同id的s 为此,我编写了以下一段代码: 它的工作和输出如下: 但我相信有一种更好的方式可以达到同样的效果。任何一个指针都很好。
我试图使用MapStruct在dto和实体对象之间映射convert,但是生成的映射器实现只返回空的映射对象。 BeermapperImpl 任何人都可以提供我的代码可能出错的地方?谢谢!
1)做这件事的正确方法是什么?我做错了什么? 2)流是线程安全的吗?我正在多线程环境中工作,所以我是否应该使用返回TRAAD安全集合的收集器?
我正在尝试使用流将一个列表映射到另一个列表。 原始列表的某些元素无法映射。也就是说,映射函数可能无法找到合适的新值。 null 对更好的方法的建议?或者我应该把溪流全部挖开,用好的旧循环?
有一个简单的: 以及任务对象的列表。如何通过使用获得每个作为的列表。我试过这个: 但它返回
问题内容: 我正在使用PostgreSQL 9.3。 我想复制一些数据库记录。由于我正在为表使用自动递增的pk ID,因此我想将ID映射从生成的重复记录ID找回原始记录。例如,假设我有一个包含2条记录的表: 使用SQL: 我希望看到类似的映射: 关于如何填写上面的问号以使其起作用的任何想法吗?非常感谢! 问题答案: 这对于来说会更简单,在此子句中可以看到加入到更新中的其他行: 仅使用SQL返回UP