So prüfen Sie, ob die Sammlung nicht leer ist, indem Sie java Stream verwenden

8

Ich bin neu in Java 8. Ich bin nicht in der Lage zu verstehen, was im folgenden Code falsch ist. Die Idee ist, Collection<User> zu senden, wenn es nicht leer ist. Aber wenn die Sammlung leer ist als gesendet HttpStatus.NOT_FOUND Entity Response.

%Vor%

Eclipse zeigt mir einen Fehler im folgenden Punkt .orElse

  

Die Methode orElse(new ResponseEntity<>(HttpStatus.NOT_FOUND)) ist für den Typ Stream<ResponseEntity<User>>

nicht definiert

Meine Basis-Interface-Methode sieht folgendermaßen aus

%Vor%     
Saurabh Kumar 03.06.2015, 22:08
quelle

3 Antworten

4

Sie mischen zwei Dinge zusammen. Die erste Aufgabe besteht darin, die Iterable in eine Collection zu konvertieren, die Sie tatsächlich mit der Stream API lösen können:

%Vor%

Beachten Sie, dass dieser Stream ein Stream von User s ist, kein Stream von Listen. Daher können Sie mit diesem Stream kein list auf etwas anderes abbilden. Die Operation map ordnet jedem Element des Streams ein neues Element zu

Dann können Sie diese Liste verwenden, um ResponseEntity

zu erstellen %Vor%

Sie können diese Schritte kombinieren, indem Sie ein Collector erstellen, das diese Schritte ausführt, obwohl dies keinen Vorteil bringt, es ist nur eine Frage des Stils:

%Vor%     
Holger 04.06.2015, 09:55
quelle
5

Es ist nicht notwendig und oft ein Fehler, alles in eine Zeile zu stopfen. In diesem Fall können Sie nicht - es gibt keine solche API für Ihre Absicht.

Halten Sie es einfach:

%Vor%

Aber wenn Sie absolut müssen :

%Vor%     
Bohemian 03.06.2015 23:46
quelle
1

Das hängt von Ihrem Terminal-Betrieb des Streams ab. Denken Sie daran, dass ein Stream nur einmal verbraucht werden kann.

  • Handelt es sich um eine Gruppierung nach der Operation / statistics? Dann erhalten Sie eine 0-Zählung oder eine leere Karte von Gruppen.
  • Wenn es in einer Liste gesammelt wird, dann ist es eine leere Liste.
  • Wenn es sich um eine der Methoden handelt, die ein Optional zurückgibt (z. B. findAny ), können Sie die Nullprüfungsmethoden des optionalen Objekts verwenden.
the8472 03.06.2015 23:36
quelle

Tags und Links