Comment convertir une liste d’éléments uniques en Java 8 en option

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();