Défaillant en option avec OrElse Optional.empty en Java 8

hotmeatballsoup:

Java 8 ici. Je dois rechercher deux listes de POJO pour une chaîne et que vous souhaitez utiliser correctement les API de flux / en option.

Si le nom apparaît dans la première liste ( » lunches« ) , alors je veux revenir en option contenant. Sinon, si le nom apparaît dans la deuxième liste ( » dinners« ) , alors je veux revenir en option contenant. Sinon , je veux revenir Optional.empty()si le nom n'existant ni sur la liste. Ma meilleure tentative jusqu'ici:

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

    }

}

aider quelqu'un peut me traverser la ligne d'arrivée ici?

Dead Pool :

Mélanger à la fois la liste à l' aide Stream.ofet vérifier l' élément ou de retourOptional.empty()

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

Selon la suggestion de @Holger vous pouvez également utiliser Stream.concatpour concaténer deux cours d' eau, puis vérifier l' élément

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

Je suppose que tu aimes

Origine http://10.200.1.11:23101/article/api/json?id=427354&siteId=1
conseillé
Classement