Incumplimiento de pago opcional OrElse con Optional.empty en Java 8

hotmeatballsoup:

Java 8 aquí. Tengo que buscar dos listas de POJOs para una cadena y desea utilizar las API opcionales / Stream correctamente.

Si el nombre aparece en la primera lista (" lunches") entonces quiero devolver un opcional que lo contiene. De lo contrario, si el nombre aparece en la segunda lista (" dinners") entonces quiero devolver un opcional que lo contiene. De lo contrario, quiero volver Optional.empty()si el nombre no existe en ninguna de las listas. Mi mejor intento hasta el momento:

public class Restaurant {

    private String id;
    private String name;
    private List<Food> lunches;
    private List<Food> dinners;

    public Optional<Food> findFoodByName(String name) {

        return Optional.of(lunches.stream()
                                  .filter(food -> food.getName()
                                                      .equalsIgnoreCase(name))
                                  .findFirst())
                       .orElse(dinners.stream()
                                      .filter(food -> food.getName()
                                                          .equalsIgnoreCase(name))
                       .findFirst());
//                     .orElse(null);        TODO: how to return empty optional if neither in 'lunches' nor 'dinners'?

    }

}

¿Puede alguien me ayuda cruzar la línea de meta aquí?

Consorcio inactivo :

Combinar tanto la lista utilizando Stream.ofy compruebe si hay elemento o devoluciónOptional.empty()

Stream.of(lunches, dinners)
      .flatMap(List::stream)
      .filter(s -> s.getName()
                    .equalsIgnoreCase(name))
      .findFirst();

De acuerdo con la sugerencia de @Holger también se puede utilizar Stream.concata concat dos corrientes y para verificar si el elemento

Stream.concat(lunches.stream(), dinners.stream())
      .filter(s -> s.getName()
                    .equalsIgnoreCase(name))
      .findFirst();

Supongo que te gusta

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