java8 Stream的用法

Stream用来将数据转换成我们想要的内容,比如说我有一个整形List,我想把它里面的每个元素在原来的基础上+1,这时用Stream就可以很容易的实现了:

        List<Integer> list=Arrays.asList(1,2,3);
        List<Integer> list1=list.stream().map(x ->x=x+1).collect(Collectors.toList());

常用的函数有map,filter,flatMap,sort,distinct,skip,limit,peek等
map:一个输入对应着一个输出。
filter:符合判断条件的才允许通过。
flatMap:和map类似,只不过这个是把输出的内容写回,而之前的map是生成一个新的数据源。
sort:排序。
distinct:去重。
limit:保留前多少个。
skip:跳过前多少个。
peek:个人理解好像跟动态代理似的,有个增强的功能?这个我还不太懂。

Stream主要是用lambda表达式来简化代码的书写,这里的x->x=x+1就是lambda表达式了,我之前每次看到这个都发懵,因为之前也没接触过->这个符号,但是后来用多了发现也没啥,说下我对这个表达式的理解吧,从左往右,第一个x,就像是形式参数一样,用于代指右侧的表达式,也可以写成y,z,apple等;接下来是->这个符号,他就是一个固定的符号,用于把左右分开;这个符号右边,就是表达式,在这里由于用的是map方法,所以要写一个赋值表达式,比如说x=x*x+1等等,如果使用的是filter的话表达式要写一个判断表达式,比如说x!=null&&x>=2,只有符合判断条件的才允许通过。

我们可以把这些功能函数想象成可以组装的净水器,净水器分了很多层,有石子,沙子,明矾等等,每一层都可以过滤水里不同的脏东西,许多层组合在一起构成了一个完整的净水器。这个也是,每一个函数就是一个随意拆卸组装的工具管道,多个管道组装到一起,数据通过后就变成了我们想要的数据了,比如说如下的例子:

 List<Integer> list= Arrays.asList(24,35,48,62,79,754);
        List<Integer> list1=list.stream().limit(5).skip(1).sorted(new Comparator<Integer>() {
            @Override
            public int compare(Integer o1, Integer o2) {
                return o1-o2;
            }
        }).distinct().map(x->x=x+1).collect(Collectors.toList());
        list1.forEach(x->System.out.println(x));

我对数据先取了前五个,然后去掉第一个,按大小排序,去重,每个元素+1,输出后打印。小伙伴们可以猜一下这个小例子的输出结果是什么。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值