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é.
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);
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