ホームページ >Java >&#&チュートリアル >Java で Stream を使用して if の多すぎる条件の判定を最適化する方法
Jdk1.8 新機能 Stream ストリームには、anyMatch、allMatch、noneMatch の 3 つの API があり、それぞれの機能は次のとおりです。
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));以上の 3 つの実装方法により、if の判定条件が多すぎる状況をある程度最適化できることがわかります。その最適化を使用しますか? 日常の実際の開発では、このような多数の判定条件を備えたコードを目にしたことがあると思います。
if(StringUtils.isEmpty(str1) || StringUtils.isEmpty(str2) || StringUtils.isEmpty(str3) || StringUtils.isEmpty(str4) || StringUtils.isEmpty(str5) || StringUtils.isEmpty(str6) ){ ..... }このとき、ストリーム フローを使用して最適化することを検討できます。最適化されたコードは次のとおりです。次のとおりです:
if(Stream.of(str1, str2, str3, str4,str5,str6).anyMatch(s->StringUtils.isEmpty(s))){ ..... }このように最適化すると、多数の if に条件を積み上げたものよりもエレガントになりますか? もちろん、これは or 条件のみに当てはまります。and 条件に遭遇した場合は、たとえば:
if(StringUtils.isEmpty(str1) && StringUtils.isEmpty(str2) && StringUtils.isEmpty(str3) && StringUtils.isEmpty(str4) && StringUtils.isEmpty(str5) && StringUtils.isEmpty(str6) ){ ..... }Stream を使用して最適化した後:
if(Stream.of(str1, str2, str3, str4,str5,str6).allMatch(s->StringUtils.isEmpty(s))){ ..... }など、Stream を使用して最適化することもできます。
以上がJava で Stream を使用して if の多すぎる条件の判定を最適化する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。