栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Stream API

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Stream API

为什么要用Stream API

无存储。stream不是一种数据结构,它只是某种数据源的一个视图,数据源可以是一个数组,Java容器或I/O channel等。
为函数式编程而生。对stream的任何修改都不会修改背后的数据源,比如对stream执行过滤操作并不会删除被过滤的元素,而是会产生一个不包含被过滤元素的新stream。


创建Stream 流的方式

Collection 提供了两个方法一种是stream() 串行流,还一种parallelStream() 并行流,

1.集合创建stream

List list = new ArrayList<>();
Stream stream = list.stream();

2.数组创建stream

Integer[] nums = new Integer[10];
Stream stream1 = Arrays.stream(nums);

3.通过 Stream 类中静态方法 of()

Stream stream = Stream.of(1,2,3,4,5,6);

4.创建无限流

//迭代
Stream stream3 = Stream.iterate(0, (x) -> x + 1);

Stream的中间操作

1.filter(过滤):接收 Lambda , 从流中排除某些元素

例:

    List employeeList = Arrays.asList(
            new Employee(1, "小赵", 18),
            new Employee(1, "小钱", 19),
            new Employee(1, "小孙", 20),
            new Employee(1, "小李", 21),
            new Employee(1, "小周", 22),
            new Employee(1, "小吴", 23),
            new Employee(1, "小郑", 24),
            new Employee(1, "小王", 25)
    );


    
    @Test
    public void stream(){
       employeeList.stream().filter(e -> e.getAge() > 20).forEach( System.out::println);
    }

输出:

2.distinct (去重)

    List employeeList = Arrays.asList(
            new Employee(1, "小赵", 18),
            new Employee(1, "小赵", 18),
            new Employee(1, "小赵", 18),
            new Employee(1, "小钱", 19),
            new Employee(1, "小孙", 20),
            new Employee(1, "小李", 21),
            new Employee(1, "小周", 22),
            new Employee(1, "小吴", 23),
            new Employee(1, "小郑", 24),
            new Employee(1, "小王", 25)
    );

    
    @Test
    public void stream2(){
        Stream distinct = employeeList.stream().distinct();
        distinct.forEach(System.out::println);
    }

输出:

如果不去重直接遍历则为

3.limit (截取前面maxSize条数据)

可以根据过滤条件组合,如

4.map(用于映射每个元素到对应的结果)

针对流中每一个元素进行转化操作

 
    @Test
    public void mapTest() {
        List list = Arrays.asList("aaa", "bbb", "ccc");
        // 使用Stream管道流
        list.stream().map(s -> s.toUpperCase()).collect(Collectors.toList()).forEach(System.out::println);
    }

输出结果为:

 

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/678043.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号