Maison >Java >javaDidacticiel >Comment convertir facultatif en flux dans Java 8 ?
L'API Stream de Java offre des solutions de codage concises, mais certains scénarios peuvent poser des défis. Une telle situation implique la conversion d'un fichier facultatif
Étant donné une liste de choses (List
things.stream().flatMap(this::resolve).findFirst();
Cependant, flatMap() attend un flux comme valeur de retour, tandis que Optionnel ne fournit pas de méthode stream().
Java 16 introduit Stream.mapMulti(), résolvant ce problème :
Optional<Other> result = things.stream() .map(this::resolve) .<Other>mapMulti(Optional::ifPresent) .findFirst();
Java 9 introduitOptional.stream(), permettant la conversion directe :
Optional<Other> result = things.stream() .map(this::resolve) .flatMap(Optional::stream) .findFirst();
Malheureusement, Java 8 ne dispose pas d'une méthode simple pour convertir Facultatif en Stream. Cependant, une fonction d'assistance peut être utilisée :
static <T> Stream<T> streamopt(Optional<T> opt) { if (opt.isPresent()) return Stream.of(opt.get()); else return Stream.empty(); } Optional<Other> result = things.stream() .flatMap(t -> streamopt(resolve(t))) .findFirst();
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!