Maison  >  Article  >  Java  >  Comment utiliser Stream en Java pour optimiser le jugement d'un trop grand nombre de conditions si

Comment utiliser Stream en Java pour optimiser le jugement d'un trop grand nombre de conditions si

王林
王林avant
2023-05-05 10:40:062335parcourir

Utilisez Stream pour optimiser le cas d'un trop grand nombre de conditions de jugement si

la nouvelle fonctionnalité Jdk1.8 Stream Stream possède trois de ces API, anyMatch, allMatch, noneMatch, leurs fonctions respectives sont les suivantes :

  • anyMatch : jugement que any l'une des conditions satisfait la condition, puis renvoie true ;

  • allMatch : si toutes les conditions sont satisfaites, alors true est renvoyé

  • noneMatch : si toutes les conditions ne sont pas satisfaites, alors true est renvoyé ;

La façon dont ils sont utilisés est en fait très simple :

List<String> list = Arrays.asList("a", "b", "c","d", "");
//任意一个字符串判断不为空则为true
boolean anyMatch = list.stream().anyMatch( s->StringUtils.isEmpty(s));
//所有字符串判断都不为空则为true
boolean allMatch = list.stream().allMatch( s->StringUtils.isEmpty(s));
//没有一个字符判断为空则为true
boolean noneMatch = list.stream().noneMatch( s->StringUtils.isEmpty(s));

On peut voir que selon les trois méthodes de mise en œuvre ci-dessus, la situation de trop de conditions de jugement dans if peut être optimisée dans une certaine mesure. dans quel scénario est-il plus approprié d’utiliser son optimisation ?

Dans le développement réel quotidien, nous avons peut-être vu du code avec de nombreuses conditions de jugement comme celle-ci :

 if(StringUtils.isEmpty(str1) || StringUtils.isEmpty(str2) ||
    StringUtils.isEmpty(str3) || StringUtils.isEmpty(str4) ||
    StringUtils.isEmpty(str5) || StringUtils.isEmpty(str6)
   ){
 .....
}

À l'heure actuelle, vous pouvez envisager d'utiliser le flux de flux pour optimiser le code optimisé comme suit :

if(Stream.of(str1, str2, str3, str4,str5,str6).anyMatch(s->StringUtils.isEmpty(s))){
 .....
 }

Optimisé comme ça Enfin, n'est-ce pas plus élégant que les conditions empilées dans un tas de si ?

Bien sûr, ceci ne concerne que les conditions ou. Si vous rencontrez des conditions, vous pouvez également utiliser Stream pour optimiser, par exemple :

if(StringUtils.isEmpty(str1) && StringUtils.isEmpty(str2) &&
   StringUtils.isEmpty(str3) && StringUtils.isEmpty(str4) &&
   StringUtils.isEmpty(str5) && StringUtils.isEmpty(str6)
){
   .....
}

Après avoir utilisé Stream pour optimiser :

if(Stream.of(str1, str2, str3, str4,str5,str6).allMatch(s->StringUtils.isEmpty(s))){
  .....
}

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer
Article précédent:Que sont les assertions JavaArticle suivant:Que sont les assertions Java