List<TrCardInfoGatherTemp> cardInfoGatherTempList = trCardInfoGatherTempService.queryTrCardInfoGatherTempByDevId(devIdList); cardInfoGatherTempList.stream().forEach(cardInfoGatherTemp -> { Optional<TrCardInfoGatherTemp> optionalDeviceInfo = Optional.ofNullable(cardInfoGatherTemp); if (optionalDeviceInfo.map(TrCardInfoGatherTemp::getType).orElse("").startsWith("PWR") || optionalDeviceInfo.map(TrCardInfoGatherTemp::getType).orElse("").startsWith("FAN") || optionalDeviceInfo.map(TrCardInfoGatherTemp::getSlot).orElse("").startsWith("FAN") || optionalDeviceInfo.map(TrCardInfoGatherTemp::getSlot).orElse("").startsWith("PWR")) { return; } }); return这部分代码提出来作为公用代码
时间: 2024-03-21 14:37:50 浏览: 54
可以将 Lambda 表达式中的代码提取出来作为一个公用方法,然后在 Lambda 表达式中调用该方法。具体代码如下:
```java
private boolean isPowerOrFan(TrCardInfoGatherTemp cardInfoGatherTemp) {
Optional<TrCardInfoGatherTemp> optionalDeviceInfo = Optional.ofNullable(cardInfoGatherTemp);
return optionalDeviceInfo.map(TrCardInfoGatherTemp::getType).orElse("").startsWith("PWR")
|| optionalDeviceInfo.map(TrCardInfoGatherTemp::getType).orElse("").startsWith("FAN")
|| optionalDeviceInfo.map(TrCardInfoGatherTemp::getSlot).orElse("").startsWith("FAN")
|| optionalDeviceInfo.map(TrCardInfoGatherTemp::getSlot).orElse("").startsWith("PWR");
}
List<TrCardInfoGatherTemp> cardInfoGatherTempList = trCardInfoGatherTempService.queryTrCardInfoGatherTempByDevId(devIdList);
cardInfoGatherTempList.stream().filter(cardInfoGatherTemp -> !isPowerOrFan(cardInfoGatherTemp)).forEach(cardInfoGatherTemp -> {
// TODO: 处理非 PWR 或 FAN 的逻辑
});
```
在上面的代码中,我们将 Lambda 表达式中的代码提取出来作为了 isPowerOrFan 方法。该方法接收一个 TrCardInfoGatherTemp 对象,返回一个 boolean 类型的值。在 Lambda 表达式中,我们首先使用 filter 方法过滤出非 PWR 或 FAN 的对象,并将其传递给 forEach 方法。在 forEach 方法中,我们调用 isPowerOrFan 方法来判断对象是否为 PWR 或 FAN,如果是,则直接返回,不做处理。否则,可以在 TODO 的位置添加处理非 PWR 或 FAN 的逻辑。
阅读全文