[Java] Elementexistenzprüfung mit Stream

Es gibt keine Methode namens "Stream # isEmpty", daher weiß ich nicht, wie ich es am besten schreiben soll, also schreibe ich es in Qiita.

Zunächst würde ich in normalen Zeiten wie folgt schreiben.

list.stream()
        .anyMatch(Bedingung Lambda-Ausdruck oder Methodenreferenz);

Aber wie soll ich diesmal schreiben, wenn ich nur ein Urteil wie "List # isEmpty" für "Stream" fällen möchte? Es ist eine Geschichte.

Zum Beispiel möchte ich nur beurteilen, ob es in Stream ein Ergebnis gibt, das durch Abfragen mit Doma2 zurückgegeben wurde. Darf verwenden.

Daher weiß ich nicht, welche Antwort die beste ist, aber ich schreibe das Muster, über das ich nachgedacht habe.

Immer wahr mit anyMatch

Auf den ersten Blick mag es ein wenig beängstigend sein.

	boolean notEmpty = stream()
			.anyMatch(e -> true);

	System.out.println(notEmpty);

Iterator#hasNext

Eindruck, dass Sie ohne die erklärenden Variablen nicht wissen, was Sie tun möchten.

	boolean notEmpty = stream()
			.iterator()
			.hasNext();

	System.out.println(notEmpty);

Optional#isPresent

Hmm.

	boolean notEmpty = stream()
			.findAny()
			.isPresent();

	System.out.println(notEmpty);

count

NG, weil es viel Abfall gibt.

	boolean notEmpty = stream()
			.count() > 0;

	System.out.println(notEmpty);

Zähle als 1 oder 0

Das ist noch besser.

	//Immer noch besser
	boolean notEmpty = stream()
			.limit(1)
			.count() > 0;

	System.out.println(notEmpty);

toList

Das ist auch verschwenderisch, also NG.

	boolean notEmpty = !stream()
			.collect(Collectors.toList())
			.isEmpty();

	System.out.println(notEmpty);

Ist das Muster "Iterator # hasNext" nicht gut für die Effizienz? (Besonders wenn mit Doma2 verwendet) Wenn es diese Szene gibt, würde ich sie mit "anyMatch (e-> true)" schreiben, was am einfachsten zu sein scheint, ohne an irgendetwas zu denken.

Recommended Posts

[Java] Elementexistenzprüfung mit Stream
[Java 8] Doppelte Löschung (& doppelte Überprüfung) mit Stream
Java8-Listenkonvertierung mit Stream Map
Überprüfen Sie die Heap-Nutzung mit Java Flight Recorder
Probieren Sie Java 8 Stream aus
Java-Versionsprüfung
Java Stream API
Java-Überprüfungsprozess
Java 8 studieren (Stream)
Java Stream-Beendigung
[Java] Stream-Verarbeitung
Java 9 Optional :: stream
[Java] Erstellen Sie eine Sammlung mit nur einem Element
Machen Sie Java Stream Zeilenumbrüche mit Eclipse schön
Duplikatprüfung für Java8-Stream (ordentlich mit Collector schreiben)
Installieren Sie Java mit Homebrew
[Java] Stream Collectors Hinweis
Überprüfen Sie die Implementierung von Java toString ()
Wechseln Sie die Plätze mit Java
Installieren Sie Java mit Ansible
[Java] Stream API-Stream-Generierung
[Java] Stream API / Map
Überprüfen Sie das Verhalten von Java Intrinsic Locks mit bpftrace
Schalten Sie Java mit direnv
Informationen zur Java8-Stream-Reduzierung
Java-Download mit Ansible
Lass uns mit Java kratzen! !!
Erste Schritte mit älteren Java-Ingenieuren (Stream + Lambda)
Überprüfen Sie die Abdeckung mit Codecov in der Java + Gradle + Wercker-Konfiguration
Erstellen Sie Java mit Wercker
FizzBuzz mit Stream ausgeben
Grobe Zusammenfassung des Java8-Streams
Endian-Konvertierung mit JAVA
So behandeln Sie Ausnahmen mit Java 8 Stream oder Optional kühl
Behandeln Sie Ausnahmen kühl mit Java 8-Lambda-Ausdrücken und der Stream-API
Überdenken von Entwurfsmustern mit Java8-Lambda-Ausdrücken und Stream - Builder-Muster -
Listenverarbeitung zum Verstehen mit Bildern --java8 stream / javaslang --bonus
[Java] Überprüfen Sie den Unterschied zwischen orElse und orElseGet mit IntStream
Konvertieren Sie ein zweidimensionales Array mit der Java 8 Stream-API in das CSV-Format
[Maven] Deaktivieren Sie den .Net-basierten Assembly Analyzer mit OWASP Dependency Check [Java].
(Java) Einfache BDD mit Spektrum?
Verwenden Sie Lambda-Ebenen mit Java
Erstellen Sie mit Gradle ein Java-Multiprojekt
Java-Konfiguration mit Spring MVC
Experimentieren wir mit der Java-Inline-Erweiterung
Überprüfen Sie den CSV-Wert mit RSpec
[Vorlage] MySQL-Verbindung mit Java
Schreiben Sie Java Try-Catch mit Optional neu
Installieren Sie Java 7 mit Homebrew (Fass)
[Java] JSON-Kommunikation mit Jackson
Java zum Spielen mit Function
Versuchen Sie eine DB-Verbindung mit Java
[Java11] Stream-Zusammenfassung - Vorteile von Stream -
Aktivieren Sie Java EE mit NetBeans 9
[Java] JavaConfig mit statischer innerer Klasse
Versuchen Sie gRPC mit Java, Maven
Lassen Sie uns Excel mit Java betreiben! !!
Java-Versionsverwaltung mit SDKMAN
Wie man ganze Zahlen mit Rubin überprüft