您好,欢迎访问一九零五行业门户网

Java如何使用Stream优化if中判断条件过多情况

使用stream优化if中判断条件过多情况jdk1.8新特性stream流有三个这样api,anymatch,allmatch,nonematch,各自的作用如下:
anymatch:判断条件里任意一个满足条件,则返回true;
allmatch:判断条件里所有都满足条件,则返回true;
nonematch:判断条件里所有都不满足条件,则返回true;
它们的使用方式其实很简单:
list<string> list = arrays.aslist("a", "b", "c","d", "");//任意一个字符串判断不为空则为trueboolean anymatch = list.stream().anymatch( s->stringutils.isempty(s));//所有字符串判断都不为空则为trueboolean allmatch = list.stream().allmatch( s->stringutils.isempty(s));//没有一个字符判断为空则为trueboolean nonematch = list.stream().nonematch( s->stringutils.isempty(s));
可见,根据以上三种实现方式,可以在某种程度上优化if里判断条件过多的情况,那么,在哪种场景里比较合适利用其优化呢?
在日常实际开发当中,我们可能会看到过这样存在很多判断条件的代码:
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).anymatch(s->stringutils.isempty(s))){ ..... }
这样优化后,是不是就比那堆if里堆积到一块的条件更为优雅了?
当然,这只是针对或条件的,若是遇到与条件时,同样可以用stream来优化,例如:
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))){ .....}
以上就是java如何使用stream优化if中判断条件过多情况的详细内容。
其它类似信息

推荐信息