java8-17 --- Stream流

一、StreamAPI实例化

java 复制代码
 /**
     * 通过集合创建Stream流
     */
    @Test
    public void test1(){
        ArrayList<Integer> arrayList = new ArrayList<>();
        //返回一个顺序流
        Stream<Integer> stream = arrayList.stream();
        //返回一个并行流
        Stream<Integer> integerStream = arrayList.parallelStream();
        System.out.println(stream);
        System.out.println(integerStream);
    }

    /**
     * 通过数组创建Stream流
     */
    @Test
    public void test2(){
        //返回一个流
        Integer[] arr = {1,2,3,4};
        Stream<Integer> stream = Arrays.stream(arr);
    }
    /**
     * 通过of()创建Stream流
     */
    @Test
    public void test3(){
        Stream<String> stream = Stream.of("aa", "bb", "cc", "dd");
    }

二、StreamAPI中间操作

java 复制代码
/**
     * 筛选与切片
     */
    @Test
    public void test4(){
        //接收lambda从流中排除某些元素
        ArrayList<Integer> arrayList = new ArrayList<>();
        for (int i = 1; i <= 10 ; i++) {
            arrayList.add(i);
        }
        //filter()过滤操作
        arrayList.stream().filter(integer -> integer > 5).forEach(System.out :: println);
        //limit() --- 截断流,使其元素不超过给定数量
        arrayList.stream().limit(2).forEach(System.out :: println);
        //skip() --- 跳过元素,返回一个扔掉了前n个元素
        arrayList.stream().skip(5).forEach(System.out :: println);
        //distinct() --- 筛选,通过流所生成元素的hashCode() 和 equals() 去除重复元素
        arrayList.add(5);
        arrayList.add(6);
        arrayList.add(8);
        arrayList.stream().distinct().forEach(System.out :: println);
    }

    /**
     * 映射
     */
    @Test
    public void test5(){
        //map() --- 接收一个函数作为参数
        List<String> list = Arrays.asList("aa", "bb", "cc");
        list.stream().map(str -> str.toUpperCase()).forEach(System.out :: println);
    }

    /**
     * 排序
     */
    @Test
    public void test6(){
        //sorted() --- 自然排序
        List<Integer> list = Arrays.asList(12, 23, 1, 56, 23);
        list.stream().sorted().forEach(System.out :: println);
        //定制排序
        list.stream().sorted((o1, o2) -> o1 - o2).forEach(System.out :: println);
    }

三、终止操作

java 复制代码
@Test
    public void test7(){
        //allMatch() --- 检查所有元素是否匹配
        List<Integer> list = Arrays.asList(12, 34, 1, 45);
        System.out.println(list.stream().allMatch(Integer -> Integer > 12));
        //anyMatch() --- 检查是否至少匹配一个元素
        System.out.println(list.stream().anyMatch(Integer -> Integer > 23));
        //findFirst() --- 返回第一个元素
        System.out.println(list.stream().findFirst().get());
        //count() --- 返回流中元素的总个数
        System.out.println(list.stream().count());
        //max() --- 返回流中最大值
        System.out.println(list.stream().max((o1, o2) -> Integer.compare(o1, o2)).get());
        //min() --- 返回流中最小值
        System.out.println(list.stream().min((o1, o2) -> Integer.compare(o1, o2)).get());
        //forEach() --- 遍历集合
        list.forEach(integer -> {
            System.out.println(integer);
        });
        //reduce() --- 将流中元素反复结合起来,得到一个值
        System.out.println(list.stream().reduce(0, (o1, o2) -> o1 + o2));
        //
        List<Integer> collect = list.stream().filter(Integer -> Integer > 23).collect(Collectors.toList());
        collect.forEach(a ->{
            System.out.println(a);
        });
    }
相关推荐
程序员张32 小时前
Maven编译和打包插件
java·spring boot·maven
ybq195133454313 小时前
Redis-主从复制-分布式系统
java·数据库·redis
weixin_472339464 小时前
高效处理大体积Excel文件的Java技术方案解析
java·开发语言·excel
小毛驴8504 小时前
Linux 后台启动java jar 程序 nohup java -jar
java·linux·jar
DKPT5 小时前
Java桥接模式实现方式与测试方法
java·笔记·学习·设计模式·桥接模式
好奇的菜鸟6 小时前
如何在IntelliJ IDEA中设置数据库连接全局共享
java·数据库·intellij-idea
DuelCode7 小时前
Windows VMWare Centos Docker部署Springboot 应用实现文件上传返回文件http链接
java·spring boot·mysql·nginx·docker·centos·mybatis
优创学社27 小时前
基于springboot的社区生鲜团购系统
java·spring boot·后端
幽络源小助理7 小时前
SpringBoot基于Mysql的商业辅助决策系统设计与实现
java·vue.js·spring boot·后端·mysql·spring
猴哥源码7 小时前
基于Java+springboot 的车险理赔信息管理系统
java·spring boot