[Java] Vérification de l'existence des éléments avec Stream

Il n'y a pas de méthode appelée Stream # isEmpty, donc je ne sais pas comment l'écrire au mieux, donc je l'écris dans Qiita.

Tout d'abord, en temps normal, j'écrirais comme suit.

list.stream()
        .anyMatch(Condition Expression Lambda ou référence de méthode);

Mais cette fois, comment dois-je écrire si je veux juste porter un jugement comme List # isEmpty for Stream? C'est une histoire.

Par exemple, je veux juste juger s'il y a un résultat dans Stream qui a été renvoyé en lançant une requête dans Doma2. Peut utiliser.

En conséquence, je ne connais pas la réponse qui est la meilleure, mais j'écris le modèle auquel j'ai pensé.

Toujours vrai avec anyMatch

Cela peut être un peu effrayant à première vue.

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

	System.out.println(notEmpty);

Iterator#hasNext

Impression que vous ne savez pas ce que vous voulez faire sans les variables explicatives.

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

	System.out.println(notEmpty);

Optional#isPresent

Hmm.

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

	System.out.println(notEmpty);

count

NG car il y a beaucoup de gaspillage.

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

	System.out.println(notEmpty);

Comptez pour 1 ou 0

C'est encore mieux.

	//Toujours mieux
	boolean notEmpty = stream()
			.limit(1)
			.count() > 0;

	System.out.println(notEmpty);

toList

C'est aussi du gaspillage, donc NG.

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

	System.out.println(notEmpty);

Le modèle de ʻIterator # hasNextn'est-il pas bon pour l'efficacité? (Surtout si utilisé avec Doma2) Si j'étais dans cette scène, je l'écrirais avec ʻany Match (e-> true), ce qui semble être le plus simple sans penser à rien.

Recommended Posts

[Java] Vérification de l'existence des éléments avec Stream
[Java 8] Suppression en double (et vérification en double) avec Stream
Conversion de liste Java8 avec Stream map
Vérifier l'utilisation du tas avec Java Flight Recorder
Essayez Java 8 Stream
Vérification de la version Java
API Java Stream
Processus de vérification Java
Étudier Java 8 (Stream)
Terminaison du flux Java
[Java] Traitement de flux
Java 9 Facultatif :: stream
[Java] Créer une collection avec un seul élément
Rendre la ligne Java Stream agréable avec Eclipse
Vérification de duplication de flux Java8 (écrire proprement à l'aide de Collector)
Installez java avec Homebrew
[Java] Remarque sur les collecteurs de flux
Vérifier l'implémentation de Java toString ()
Changer de siège avec Java
Installez Java avec Ansible
[Java] Génération de flux API-Stream
[Java] API / carte de flux
Vérifiez le comportement de Java Intrinsic Locks avec bpftrace
Changer java avec direnv
Pratique de l'API Java8 Stream
À propos de l'opération de réduction du flux Java8
Téléchargement Java avec Ansible
Raclons avec Java! !!
Premiers pas avec les anciens ingénieurs Java (Stream + Lambda)
Vérifiez la couverture avec Codecov dans la configuration Java + Gradle + Wercker
Construire Java avec Wercker
Sortie FizzBuzz avec flux
Résumé approximatif du flux Java8
Conversion Endian avec JAVA
Comment gérer les exceptions froidement avec Java 8 Stream ou en option
Gérez les exceptions avec fraîcheur avec les expressions lambda Java 8 et l'API Stream
Repenser les modèles de conception avec les expressions lambda Java8 et Stream --Builder pattern -
Traitement des listes à comprendre avec des images --java8 stream / javaslang --bonus
[Java] Vérifiez la différence entre orElse et orElseGet avec IntStream
Convertir un tableau bidimensionnel au format csv avec l'API Java 8 Stream
[Maven] Désactiver l’analyseur d’assembly basé sur .Net avec la vérification des dépendances OWASP [Java]
(Java) BDD facile avec Spectrum?
Utiliser des couches Lambda avec Java
Créer un multi-projet Java avec Gradle
Configuration Java avec Spring MVC
Expérimentons l'expansion en ligne Java
Vérifiez la valeur CSV avec RSpec
[Template] Connexion MySQL avec Java
Réécrire Java try-catch avec facultatif
Installez Java 7 avec Homebrew (cask)
[Java] Communication JSON avec jackson
Java pour jouer avec Function
Essayez la connexion DB avec Java
[Java11] Résumé du flux -Avantages du flux-
Activer Java EE avec NetBeans 9
[Java] JavaConfig avec classe interne statique
Essayez gRPC avec Java, Maven
Exploitons Excel avec Java! !!
Gestion des versions Java avec SDKMAN
Comment vérifier les nombres entiers avec ruby