Comment vérifier si la Collecte n'est pas vide à l'aide de java Flux

Je suis nouveau sur Java 8. Je ne suis pas en mesure de comprendre ce qui est mauvais dans le morceau de code suivant. L'idée est d'envoyer Collection<User> si elle n'est pas vide. Mais si la collection est vide que les envoyés HttpStatus.NOT_FOUND Entité de réponse.

@RequestMapping(value = "/find/pks", 
                method = RequestMethod.GET, 
                produces = MediaType.APPLICATION_JSON_VALUE)
public ResponseEntity<Collection<User>> getUsers(@RequestBody final Collection<String> pks)
{
    return StreamSupport.stream(userRepository.findAll(pks).spliterator(), false)
         .map(list -> new ResponseEntity<>(list , HttpStatus.OK))
         .orElse(new ResponseEntity<>(HttpStatus.NOT_FOUND));
}

Eclipse me montre l'erreur dans le point suivant .orElse

La méthode orElse(new ResponseEntity<>(HttpStatus.NOT_FOUND)) est pas défini pour le type Stream<ResponseEntity<User>>

Mon interface de base de la méthode ressemble à ce qui suit

Iterable<T> findAll(Iterable<PK> pks);
Flux de données.map() renvoie un Flux de données, et d'un Flux n'a pas de orElse() la méthode. Vous créez votre propre vie compliquée en retournant un objet iterable. Pourquoi ne pas vous retourner une Liste ou d'un Ensemble, ou même d'une Collection, et d'utiliser la fonction isEmpty()? BTW, ce que vous êtes à la cartographie n'est pas une liste, c'est un utilisateur. Si vous voulez vraiment garder à l'aide de Itératif, l'utilisation itératif.iterator().hasNext() pour voir si elle est vide ou pas.
L'interface est fournie par l'un des ressorts. ))))
Ensuite, utilisez itératif.iterator().hasNext() pour voir si elle est vide ou pas. Mais cela dit, je ne voudrais pas retourner une erreur 404 dans un tel cas. il suffit de retourner un 200 avec une liste vide. 404 est une ressource inconnue vous essayez d'obtenir. Vous êtes à la recherche de ressources, et de ne pas trouver quoi que ce soit est un résultat valide.

OriginalL'auteur Saurabh Kumar | 2015-06-03