处理列表时 Java 中的 lambda 函数出错
Error in lambda function in Java while handling list
我最近从 C++ 切换到 Java 并且面临着处理语法和 lambda 函数的艰难时期。所以有一种方法得到了更新。我很困惑相应地编辑代码。
所以最初 getCostChangeDtl() 用于 return CostChangeDtl 类型的数据,但现在相同的方法 return 是 CostChangeDtl 的列表。所以我做了一些相应的更改仍然面临一些问题。
之前
costChangeDetails.forEach(
costChangeDetail -> changeDtls.addAll(costChangeDetail.getItems().stream().map(item -> {
CostChangeDtl despCostChangeDtl = getCostChangeDtl(ccd, costChangeDetail, item,
metrics);
if (despCostChangeDtl.getItemID() == null)
{
String consumerGtin = item.item.getConsumerDetails().getConsumerGtin();
missingSkuGtins.add(
format("%s | %s ", consumerGtin, costChangeDetail.getLocation().getId()));
}
return despCostChangeDtl;
}).filter(despCostChangeDtl -> despCostChangeDtl.getItemID() != null)
.collect(Collectors.toList())));
之后
costChangeDetails.forEach(
costChangeDetail -> changeDtls.addAll(costChangeDetail.getItems().stream().map(item -> {
List<CostChangeDtl> despCostChangeDtl = getCostChangeDtl(ccd, costChangeDetail, item,
metrics);
for (CostChangeDtl costChangeDtl : despCostChangeDtl) {
if (costChangeDtl.getItemID() == null)
{
String consumerGtin = item.item.getConsumerDetails().getConsumerGtin();
missingSkuGtins.add(
format("%s | %s ", consumerGtin, costChangeDetail.getLocation().getId()));
}
}
return despCostChangeDtl;
}).filter(despCostChangeDtl -> despCostChangeDtl.getItemID() != null)
.collect(Collectors.toList())));
现在,我在 despCostChangeDtl.getItemID() 中收到了预期的错误,因为 despCostChangeDtl 现在是一个列表。
如何解决这个特定问题?
despCostChangeDtl 从一个对象到一个列表,所以你应该在映射之后进行平面映射。
我最近从 C++ 切换到 Java 并且面临着处理语法和 lambda 函数的艰难时期。所以有一种方法得到了更新。我很困惑相应地编辑代码。
所以最初 getCostChangeDtl() 用于 return CostChangeDtl 类型的数据,但现在相同的方法 return 是 CostChangeDtl 的列表。所以我做了一些相应的更改仍然面临一些问题。
之前
costChangeDetails.forEach(
costChangeDetail -> changeDtls.addAll(costChangeDetail.getItems().stream().map(item -> {
CostChangeDtl despCostChangeDtl = getCostChangeDtl(ccd, costChangeDetail, item,
metrics);
if (despCostChangeDtl.getItemID() == null)
{
String consumerGtin = item.item.getConsumerDetails().getConsumerGtin();
missingSkuGtins.add(
format("%s | %s ", consumerGtin, costChangeDetail.getLocation().getId()));
}
return despCostChangeDtl;
}).filter(despCostChangeDtl -> despCostChangeDtl.getItemID() != null)
.collect(Collectors.toList())));
之后
costChangeDetails.forEach(
costChangeDetail -> changeDtls.addAll(costChangeDetail.getItems().stream().map(item -> {
List<CostChangeDtl> despCostChangeDtl = getCostChangeDtl(ccd, costChangeDetail, item,
metrics);
for (CostChangeDtl costChangeDtl : despCostChangeDtl) {
if (costChangeDtl.getItemID() == null)
{
String consumerGtin = item.item.getConsumerDetails().getConsumerGtin();
missingSkuGtins.add(
format("%s | %s ", consumerGtin, costChangeDetail.getLocation().getId()));
}
}
return despCostChangeDtl;
}).filter(despCostChangeDtl -> despCostChangeDtl.getItemID() != null)
.collect(Collectors.toList())));
现在,我在 despCostChangeDtl.getItemID() 中收到了预期的错误,因为 despCostChangeDtl 现在是一个列表。 如何解决这个特定问题?
despCostChangeDtl 从一个对象到一个列表,所以你应该在映射之后进行平面映射。