I have the following code snippet which I would try to change to the lambda function.
if(catList != null && catList.size() > 0) {
animalType = AnimalType.CAT;
HttpEntity> request = new HttpEntity<>(catList, headers);
response = restTemplate.postForObject(apiUrl, request, String.class);
} else if(dogList != null && dogList.size() > 0) {
animalType = AnimalType.DOG;
} else {
return;
}
Somehow I have written like as shown below, but don't know to incorporate the dogList checking the condition
Optional.of(catList)
.map(catList -> {
....
})
.orElse(return); //
Can anyone please help me with this
解决方案
You can have an other Optional inside of the first Optional
Optional o = Optional.of(catList)
.map(catList -> ...)
.orElse(Optional.of(dogList)
.map(dogList -> ...));
Or other method using Stream if you can make the call to the service generic enough
Or other method using Stream#of
It will basically go through both lists, find the first that is not null (but you can add other conditions to your filter if you want) and apply the generic call to service.
Optional o = Stream.of(catList, dogList)
.filter(Objects::nonNull /*or other condition if you want*/)
.findFirst()
.map(list -> /*generic call to service*/);
And invoke it this way
if (!o.isPresent()) return;