Java Lambda - vérifier si une liste de tableaux de Flux de données est vide
J'ai le texte suivant expression lambda et si il fonctionne correctement lorsque bonusScheduleDurationContainers
n'est pas vide. Si elle est vide, je reçois un NoSuchElementException
. Comment puis-je vérifier cela dans l'expression lambda?
final List<ScheduleDurationContainer> bonusScheduleDurationContainers
= scheduleDurationContainersOfWeek.stream()
.filter(s -> s.getContainerType() == ScheduleIntervalContainerTypeEnum.BONUS)
.collect(Collectors.toList());
final ScheduleDurationContainer bonusScheduleDurationContainer
= bonusScheduleDurationContainers.stream()
.filter(s -> s.getDayOfWeekStartingWithZero() == dayOfWeekTmp)
.findFirst()
.get();
OriginalL'auteur quma | 2015-12-30
Vous devez vous connecter pour publier un commentaire.
Stream.findFirst
retourne unFacultatif
, c'est à vous de vérifier si l'option a une valeur plutôt que de simplement l'appel de get.Vous pouvez utiliser le
orElse
méthode pour retourner une valeur par défaut si l'option est vide.OriginalL'auteur Magnus
Vous devriez probablement ajouter quel est le type de bonusScheduleDurationContainers. C'est aussi en raison de la findFirst().Fonction get. Consultez la documentation. Il précise qu'il y aura un exception. Vous devez utiliser orElse
OriginalL'auteur Aseem Bansal