Дефолт факультативный OrElse с Optional.empty в Java 8

hotmeatballsoup:

Java-здесь. Мне нужно найти два список POJOs для строки и хочу, чтобы правильно использовать поток / факультативную API.

Если имя появляется в первом списке (» lunches«) , то я хочу , чтобы вернуть дополнительный содержащий его. В противном случае, если имя появляется во втором списке (» dinners«) , то я хочу , чтобы вернуть дополнительный содержащий его. В противном случае я хочу вернуться , Optional.empty()если имя не существует в любом списке. Моя лучшая попытка до сих пор:

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'?

    }

}

Может кто-нибудь помочь мне пересечь финишную черту здесь?

Тотализатор, где делаются ставки на смерть знаменитостей :

Объединить оба списка , используя Stream.ofи проверить элемент или возвратаOptional.empty()

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

Согласно предложению от @Holger вы можете также использовать Stream.concatдля Concat два потока , а затем проверить элемент

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

рекомендация

отhttp://10.200.1.11:23101/article/api/json?id=427308&siteId=1
рекомендация