温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

在java 8 stream表达式实现if/else逻辑的方法

发布时间:2020-07-31 10:31:41 来源:亿速云 阅读:421 作者:小猪 栏目:编程语言

这篇文章主要讲解了在java 8 stream表达式实现if/else逻辑的方法,内容清晰明了,对此有兴趣的小伙伴可以学习一下,相信大家阅读完之后会有帮助。

简介

在Stream处理中,我们通常会遇到if/else的判断情况,对于这样的问题我们怎么处理呢?

还记得我们在上一篇文章lambda最佳实践中提到,lambda表达式应该越简洁越好,不要在其中写臃肿的业务逻辑。

接下来我们看一个具体的例子。

传统写法

假如我们有一个1 to 10的list,我们想要分别挑选出奇数和偶数出来,传统的写法,我们会这样使用:

  public void inForEach(){
    List<Integer> ints = Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8, 9, 10);

    ints.stream()
        .forEach(i -> {
          if (i.intValue() % 2 == 0) {
            System.out.println("i is even");
          } else {
            System.out.println("i is old");
          }
        });
  }

上面的例子中,我们把if/else的逻辑放到了forEach中,虽然没有任何问题,但是代码显得非常臃肿。

接下来看看怎么对其进行改写。

使用filter

我们可以把if/else的逻辑改写为两个filter:

List<Integer> ints = Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8, 9, 10);

    Stream<Integer> evenIntegers = ints.stream()
        .filter(i -> i.intValue() % 2 == 0);
    Stream<Integer> oddIntegers = ints.stream()
        .filter(i -> i.intValue() % 2 != 0);

有了这两个filter,再在filter过后的stream中使用for each:

evenIntegers.forEach(i -> System.out.println("i is even"));
oddIntegers.forEach(i -> System.out.println("i is old"));

怎么样,代码是不是非常简洁明了。

看完上述内容,是不是对在java 8 stream表达式实现if/else逻辑的方法有进一步的了解,如果还想学习更多内容,欢迎关注亿速云行业资讯频道。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI