我编写了代码段,它从符合某些条件的列表中获取单个元素。有什么方法可以用相同类型的对象替换单个元素数组?
final PromoSlotSize[] slot = new PromoSlotSize[1];
promoSlotSizeList.stream()
.filter(promoSlotSize -> promoSlotSize.getOfferSet().equals(Constants.HVT_RATE_OFFER_SET))
.findFirst()
.ifPresent(p-> slot[0] =p);
最佳答案
您的方法似乎有点矫枉过正。请注意,使用
初始化数组final PromoSlotSize[] slot = new PromoSlotSize[1];
使第一个也是唯一的元素 slot[0] = null
成为默认值。因此,您可以使用 Optional::orElse
使 Stream-API 再次返回第一个找到的对象 PromoSlotSize
或 null
:
slot[0] = promoSlotSizeList.stream()
.filter(i-> i.getOfferSet().equals(Constants.HVT_RATE_OFFER_SET))
.findFirst()
.orElse(null);
正如 @YCF_L 所说:您是否认识到 Stream 返回一个可以直接使用的对象,而不是创建一个元素的数组?如果您不需要数组作为另一个方法/类的输入,请执行以下操作:
PromoSlotSize slot = promoSlotSizeList.stream()
.filter(i-> i.getOfferSet().equals(Constants.HVT_RATE_OFFER_SET))
.findFirst()
.orElse(null);
关于java - 如何避免在 java lambda 表达式中定义单个元素数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51766676/