gpt4 book ai didi

java-8 - 是否可以在 Java8 流中重写此类代码?

转载 作者:行者123 更新时间:2023-12-01 12:19:33 25 4
gpt4 key购买 nike

我试图让它适应 Java 8 流:

public boolean isProcessionRestricted(CommonMessage message) {
if (message.getClass() == BonusMessage.class) {
log.debug("Staring validating BonusMessage: '{}'", message);
BonusMessage bonusMessage = (BonusMessage) message;
Optional<BonusTriggerConfig> config = bonusTriggerConfigRepository.getCached();
if (config.isPresent()) {
BonusTriggerConfig bonusTriggerConfig = config.get();
List<BonusRewardConfig> rewardConfigs = bonusTriggerConfig.getRewardConfigs();
if (!rewardConfigs.isEmpty()) {
return rewardConfigs.stream()
.map(BonusRewardConfig::getBonusTypeId)
.noneMatch(bonusTypeId -> bonusTypeId == bonusMessage.getBonusTypeId());
} else {
return false;
}
} else {
return false;
}
}
return false;
}

但我遇到了检查流中的集合是否为空的问题。我得到的“最流畅”的东西看起来像这样:

@Override
public boolean isProcessionRestricted(CommonMessage message) {
if (message.getClass() == BonusMessage.class) {
log.debug("Staring validating BonusMessage: '{}'", message);
BonusMessage bonusMessage = (BonusMessage) message;
return bonusTriggerConfigRepository.getCached()
.map(bonusTriggerConfig -> {
List<BonusRewardConfig> rewardConfigs = bonusTriggerConfig.getRewardConfigs();
return !rewardConfigs.isEmpty() && rewardConfigs.stream()
.map(BonusRewardConfig::getBonusTypeId)
.noneMatch(bonusTypeId -> bonusTypeId == bonusMessage.getBonusTypeId());
}).orElse(false);
}
return false;
}

但我还是不喜欢。

最佳答案

您可以使用 Optional#filter改为过滤空集合,例如:

return bonusTriggerConfigRepository.getCached()
.map(bonusTriggerConfig -> bonusTriggerConfig.getRewardConfigs())
// v--- filter the empty configs out
.filter(rewardConfigs-> !rewardConfigs.isEmpty())
.map(rewardConfigs -> rewardConfigs.stream()
.map(BonusRewardConfig::getBonusTypeId)
.noneMatch(bonusTypeId -> bonusTypeId == bonusMessage.getBonusTypeId())
)
.orElse(false);

关于java-8 - 是否可以在 Java8 流中重写此类代码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45595650/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com