【发布时间】:2020-11-27 08:45:56
【问题描述】:
我有一个过滤包含枚举的列表的方法 我
if (availableImageSizes.stream()
.filter(t -> t.getNameSuffix().equals("-xs"))
.findFirst().isPresent())
{
int width = availableImageSizes.stream()
.filter(t -> t.getNameSuffix().equals("-xs"))
.findFirst().getWidth();
int height = availableImageSizes.stream()
.filter(t -> t.getNameSuffix().equals("-xs"))
.findFirst().getHeight();
}
如您所见,我尝试根据其 NameSuffix 过滤列表,过滤后我想将该值的宽度和高度映射到一个变量。但是代码错了,就算能用,也太难看了。
我可以在一个 lambda 中映射多个变量吗?如果是这样,我该如何实现?
【问题讨论】:
-
您可以生成两个值的集合,或者一个简单的数组。或者甚至创建自己的类来表示这一点(Pair 类非常流行)。取决于您想做什么以及如何处理。
-
附带说明,
availableImageSizes.stream().filter(t -> t.getNameSuffix().equals("-xs")).findFirst()可能应该被提取,您可以在其上执行ifPresent,或者在该值上链接or/orElse/etc。无需生成 3 次。
标签: java lambda java-8 java-stream optional