【JDK1.8】Stream使用示例

	@Test
    public void collectTest() {

        IntStream range = IntStream.range(1, 20000);// 产生范围内的int流
        DoubleStream dStream = Stream.of(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14)// 创建流
                .mapToDouble(value -> value + 5); // 对每个元素进行映射操作
        
        /* 操作流 lazy/eager */
        LinkedList<Double> collect = Stream.of(// 形成嵌套集合
                range.boxed(),  // 显式包装
                dStream.boxed() // 基本类型流有类型转换问题(集合类不支持基本类型)
        )
                .flatMap(baseStream -> baseStream)// 降维(平展化) --合并
                .filter(o -> o.intValue() % 2 == 0) // 过滤器
                .sorted(Comparator.comparingInt(Number::intValue)) // 排序
                .collect(// 收集器(流转换为集合)
                        LinkedList::new,// 集合实体
                        (acc, t) -> {  // 处理(集合实体,迭代值) filter
                            if (t.doubleValue() > 5)
                                acc.add(t.doubleValue() - 9);
                        },
                        LinkedList::addAll // 各线程集合合并策略
                );// 并行处理流对应收集器(三参在并行处理时用于合并集合)

        // 打印集合
        collect.forEach(System.out::println);//迭代
        String reduce = collect.stream().reduce("", (s, aDouble) -> s + ", " + aDouble, String::join); //规约 参数同上collect
        System.out.println(reduce);
    }

参考文章

Java 8系列之Stream的基本语法详解
Java 8 Stream | 菜鸟教程
Java8中的Stream API基本用法总结
Java 8 中的 Streams API 详解
Java 8 | Stream 常用函数接口
Java8之Stream流(一)基础体验系列
Java8 Stream使用flatMap合并List集合运算
Java8学习记录(三)-强大的collect操作
手把手教你使用 Java 8 Stream 收集器
Java8(3)Stream类的collectreduce方法详解
Java8(2)Stream类【四种最基本的函数式接口、使用Stream类进行流操作】
Java 8系列之Stream中万能的reduce
Java8新特性学习-Stream的Reduce及Collect方法详解
Java 8 新语法习惯 (for 循环的函数替代方案)
可选类型里的Map和FlatMap有多强大
Java8 中Stream forEach 与 foreEachOrdered 的区别
Java8之Stream流(四)并行流
深入浅出parallelStream陷阱


【小家java】java8新特性之—Stream API 详解 (Map-reduce、Collectors收集器、并行流、groupby多字段分组)超详细 java各版本特性
Java 8的新特性—终极版

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值