gpt4 book ai didi

用于检查两个条件的 Java8 lambda

转载 作者:行者123 更新时间:2023-11-30 06:41:04 25 4
gpt4 key购买 nike

我有以下代码片段,我会尝试将其更改为 lambda 函数。

if(catList != null && catList.size() > 0) {
animalType = AnimalType.CAT;
HttpEntity<List<?>> request = new HttpEntity<>(catList, headers);
response = restTemplate.postForObject(apiUrl, request, String.class);
} else if(dogList != null && dogList.size() > 0) {
animalType = AnimalType.DOG;
} else {
return;
}

不知何故,我写了如下所示,但不知道合并 dogList 检查条件

Optional.of(catList) 
.map(catList -> {
....
})
.orElse(return); //<------ THIS IS NOT POSSIBLE

谁能帮我解决这个问题

最佳答案

您可以在第一个 Optional 中包含另一个 Optional

Optional o = Optional.of(catList) 
.map(catList -> ...)
.orElse(Optional.of(dogList)
.map(dogList -> ...));

或者使用 Stream 的其他方法,如果您可以使对服务的调用足够通用的话

或者使用Stream#of的其他方法

它基本上会遍历两个列表,找到第一个不为 null 的列表(但如果需要,您可以向过滤器添加其他条件)并将通用调用应用到服务。

Optional o = Stream.of(catList, dogList)
.filter(Objects::nonNull /*or other condition if you want*/)
.findFirst()
.map(list -> /*generic call to service*/);

并以这种方式调用它

if (!o.isPresent()) return;

关于用于检查两个条件的 Java8 lambda,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56327888/

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