Comment convertir une liste contenant un ou zéro éléments en facultatif?
Le code laid:
List integers = new ArrayList(); Optional optional = integers.size() == 0 ? Optional.empty() : Optional.of(integers.get(0));
Vous pouvez utiliser la méthode Stream#findFirst()
, qui:
Renvoie un facultatif décrivant le premier élément de ce stream ou un facultatif vide si le stream est vide.
List list = ... Optional optional = list.stream().findFirst();
Avec le même succès, vous pouvez également utiliser la méthode Stream#findAny()
.
Essayez comme ceci en utilisant findFirst :
List integers = new ArrayList (); Optional result = integers.stream() .map(this::resolve) .flatMap(o -> o.isPresent() ? Stream.of(o.get()) : Stream.empty()) .findFirst();