lambda Java8 para el control de dos condiciones

Alex Hombre:

Tengo el siguiente fragmento de código que me gustaría tratar de cambiar a la función 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;
}

De alguna manera he escrito como se muestra a continuación, pero no sé para incorporar el dogList comprobar el estado

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

¿Puede alguien por favor me ayude con este

Yassin Hajaj:

Usted puede tener otro Optionalen el interior de la primeraOptional

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

U otro método que emplea Streamsi se puede hacer la llamada al servicio lo suficientemente genérica

O utilizando otro método Stream#of

Básicamente, pasará a través de las dos listas, encontrar la primera que no es nulo (pero puede agregar otras condiciones para su filtro si lo desea) y aplicar la llamada genérica para el servicio.

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

E invocar esta manera

if (!o.isPresent()) return;

Supongo que te gusta

Origin http://43.154.161.224:23101/article/api/json?id=232994&siteId=1
Recomendado
Clasificación