我编写了代码段,该段从匹配某些条件的列表中获取单个元素。有什么办法可以用相同类型的对象替换单个元素数组?
final PromoSlotSize[] slot = new PromoSlotSize[1];
promoSlotSizeList.stream()
.filter(promoSlotSize -> promoSlotSize.getOfferSet().equals(Constants.HVT_RATE_OFFER_SET))
.findFirst()
.ifPresent(p-> slot[0] =p);
最佳答案
您的方法似乎过于矫kill过正。请注意,使用初始化数组
final PromoSlotSize[] slot = new PromoSlotSize[1];
将第一个也是唯一的元素
slot[0] = null
bu设置为默认值。因此,您可以使用PromoSlotSize
使Stream-API再次返回第一个找到的对象null
或Optional::orElse
: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);