java8的流处理

java8中的流Stream,可以由array,list等其它的数据结构得到。

在java8中,任何实现了Collection接口的集合类都有个叫stream方法,这个方法可以将该集合下的元素放到流中。

        List<String> list = new ArrayList<>();
        list.add("A");
        list.add("B");
        list.add("C");
        list.add("D");
        list.add("E");
        Stream<String> stream = list.stream();//将它转为流


        Integer[] myArray = {1, 3, 5};
        Stream<Integer> myStream = Arrays.stream(myArray);//将它转为流

有了流之后,我们就可以将这个流里面的元素进行各种处理再流到其它地方

首先我们看下流处理中的map方法,这个方法接收一个函数,该函数会处理流中的每个元素,我们一般传入一个lambda表达式

        Integer[] myArray = {1, 3, 5};
        Stream<Integer> myStream = Arrays.stream(myArray);//将它转为流

        Stream<Integer> newStream = myStream.map(x->x*2);//每个元素乘以2
        newStream.forEach(x->System.out.println(x));//遍历流中的元素

接下来我们看下流的filter函数,这个函数也是接收一个函数作为参数,一般是lambda函数。该函数必须返回一个boolean值。

        Integer[] myArray = {1, 3, 5};
        Stream<Integer> myStream = Arrays.stream(myArray);//将它转为流
        Stream<Integer> filterStream = myStream.filter(x->x>4);//只把大于4的流到新的流中
        filterStream.forEach(x->System.out.println(x));//j结果是 5 

最后我们看看对流的进行最终计算处理的几个函数。对流的最终处理叫reduce.内置的sum,average和count都是计算函数。

        int [] myArray = {1, 3, 5};
        int sum = Arrays.stream(myArray).sum();

        System.out.println(sum);// 结果:9

当然我们可以用reduce来进行最终计算,这个函数要俩个参数,一个是标记(总结果的初始化状态),一个是lambda函数

        int [] myArray = {1, 3, 5};
        int sum = Arrays.stream(myArray).reduce(0, (a,b)->a+b);
        System.out.println(sum);// 结果:9
        String[] str = { "这是", "拼接", "的", "结果" };
        String result = Arrays.stream(str)
                    .reduce("结果是:", (a,b) -> a + b);

        System.out.println(result);
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值