【发布时间】:2019-01-31 16:10:47
【问题描述】:
我有一个对象列表,我在这个列表的每个元素上循环并修改了几个属性。
这是我想要转换以使用流 API 的代码。
for (Besoin besoin : besoins) {
String purchaseOrderPosition = besoin.getReferenceOa().trim();
if(purchaseOrderPosition != "") {
ValeursDynamiques valeursDynamiques = valeursDynamiquesService.DynamicValues(supplierNumber, purchaseOrderPosition);
besoin.setQuantityInTransit(valeursDynamiques.getUsedValues().getQteEnTransit());
besoin.setQuantityOrdered(valeursDynamiques.getUsedValues().getQteCommandee());
besoin.setQuantityDelivered(valeursDynamiques.getUsedValues().getQteRecue());
besoin.setDeliveryDateScheduled(valeursDynamiques.getUsedValues().getDateLivraisonPlanifiee());
besoin.setDeliverydateConfirmed(valeursDynamiques.getUsedValues().getDateLivraisonConfirmee());
besoin.setQuantityRestExpedited(valeursDynamiques.getUsedValues().getSoldeAExpedier());
}
}
【问题讨论】:
-
为什么还需要将此代码转换为流?我认为这不会有任何好处。
-
你的意思是something like this,注意字符串应该用
.equals而不是==比较 -
我认为,如果您必须对一个实例执行这么多操作,那么流的可读性就会降低。此外,流不能/不应该改变源,因此在这种情况下,您必须创建一个新列表。查看@YCF_L 的代码,您最终会得到列表的副本,但仅包含过滤后的元素。因此,如果您确实需要所有这些,或者需要改变源,我会坚持使用经典循环。
-
@YCF_L 感谢您的回答,但 .equals (...) 和 isEmpty 有什么区别?
标签: java list foreach java-stream