IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 开发测试 -> jdk8新特性Stream流 -> 正文阅读

[开发测试]jdk8新特性Stream流

Stream流开始操作

通过集合创建

    /**
     * 通过集合创建
     */
    @Test
    public void test1(){
        List<String> stream1 = Arrays.asList("java", "h5", "python", "php", "c");
        stream1.stream().forEach(s -> System.out.println(s));
    }

通过数组创建

    /**
     *通过数组创建
     */
    @Test
    public void test2(){
        String [] str={"春","夏","球","冬"};
        Arrays.stream(str).forEach(System.out::println);
    }

通过Stream的of创建

    /**
     * 通过Stream的of创建
     */
    @Test
    public void test3(){
        Stream.of("小明","小王","小李","小杨").forEach(System.out::println);
    }

Stream流中间操作

filter过滤

 /**
     *stream过滤操作
     */
    @Test
    public void test1(){
        //创建stream
        Stream<Integer> stream = Stream.of(1, 2, 3, 4, 5, 6);

        //filter过滤操作
        stream = stream.filter(a -> a % 2 == 0);

        //输出保留偶数值
        stream.forEach(System.out::println);

        //创建字符串数据,过滤李四
        List<String> list = Arrays.asList("张三", "李四", "王五");
        Stream<String> name = list.stream().filter(str -> !"李四".equals(str));
        name.forEach(s-> System.out.println(s));

        list.stream().filter(s->!"王五".equals(s)).forEach(System.out::println);
    }

distinct去重

    /**
     *distinct去重操作
     */
    @Test
    public void test2(){
        Stream<Integer> stream = Stream.of(1, 1, 8, 2, 5, 4, 4, 2, 9, 8, 3);
        stream.distinct().forEach(System.out::println);
    }

limit截断,只保留前几位

    /**
     *limit截断操作
     */
    @Test
    public void test3(){
        Stream<Integer> stream = Stream.of(1, 2, 3, 4, 5, 6, 7, 8, 9, 0);
        stream.limit(5).forEach(System.out::println);
    }

skip跳过,跳过几位,与limit相反

    /**
     *skip跳过
     */
    @Test
    public void test4(){
        Stream<Integer> stream = Stream.of(1, 2, 3, 4, 5, 6, 7, 8, 9, 0);
        stream.skip(5).forEach(System.out::println);
    }

peek对每个元素进行Lambda操作

    /**
     *peek
     */
    @Test
    public void test5(){
        Stream<Integer> stream = Stream.of(1, 2, 3, 4, 5, 6, 7, 8, 9, 0);
        stream.peek(c->System.out.println(c)).count();
    }

sorted排序按自然顺序排序

    /**
     *sorted自然排序
     */
    @Test
    public void test6(){
        Stream<Integer> stream = Stream.of(11, 23, 53, 4, 4, 55, 76, 7, 83, 29, 60);
        stream.distinct().sorted().forEach(System.out::println);
    }

map映射成新元素

    /**
     *map映射
     */
    @Test
    public void test7(){
        Stream<Integer> stream = Stream.of(11, 23, 53, 4, 4, 55, 76, 7, 83, 29, 60);
        stream.distinct().map(m->m+1).forEach(System.out::println);

        Stream<String> list = Stream.of("mi", "jd", "taobao", "baidu");
        list.map(t->t.toUpperCase()).forEach(System.out::println);
    }

所有中间操作方法列表

方 法描 述
filter(Predicate p)接收 Lambda , 从流中排除某些元素
distinct()筛选,通过流所生成元素的equals() 去除重复元素
limit(long maxSize)截断流,使其元素不超过给定数量
skip(long n)跳过元素,返回一个扔掉了前 n 个元素的流。若流中元素不足 n 个,则返回一个空流。与 limit(n) 互补
peek(Consumer action)接收Lambda,对流中的每个数据执行Lambda体操作
sorted()产生一个新流,其中按自然顺序排序
sorted(Comparator com)产生一个新流,其中按比较器顺序排序
map(Function f)接收一个函数作为参数,该函数会被应用到每个元素上,并将其映射成一个新的元素。
mapToDouble(ToDoubleFunction f)接收一个函数作为参数,该函数会被应用到每个元素上,产生一个新的 DoubleStream。
mapToInt(ToIntFunction f)接收一个函数作为参数,该函数会被应用到每个元素上,产生一个新的 IntStream。
mapToLong(ToLongFunction f)接收一个函数作为参数,该函数会被应用到每个元素上,产生一个新的 LongStream。
flatMap(Function f)接收一个函数作为参数,将流中的每个值都换成另一个流,然后把所有流连接成一个流

Stream终结操作

forEach迭代遍历

count返回流中元素总数

allMatch检查是否匹配所有元素

    /**
     * allMatch检查是否匹配所有元素
     */
    @Test
    public void test1(){
        boolean b = Stream.of(2, 4, 6, 8).allMatch(t -> t % 2 == 0);
        System.out.println(b);
    }

anyMatch检查是否至少匹配一个元素

    /**
     * anyMatch检查是否至少匹配一个元素
     */
    @Test
    public void test2(){
        boolean b = Stream.of(2, 3, 7, 5).anyMatch(t -> t % 2 == 0);
        System.out.println(b);
    }

findFirst返回第一个元素

    /**
     * findFirst返回第一个元素
     */
    @Test
    public void test3(){
        Optional<Integer> first = Stream.of(2, 3, 7, 5).findFirst();
        System.out.println(first.get());
    }

max返回最大值

    /**
     * max返回最大值
     */
    @Test
    public void test4(){
        Optional<Integer> max = Stream.of(2, 3, 7, 5).max(Integer::compareTo);
        System.out.println(max.get());
    }

reduce可以将流中元素反复结合操作起来,得到一个值

    /**
     * reduce
     */
    @Test
    public void test5(){
        String reduce = Stream.of("a", "b", "c", "d").reduce("hhh", String::concat);
        System.out.println("recoed:"+reduce);
    }

collect将流转换为其他形式

    /**
     * collect
     */
    @Test
    public void test6(){
        List<String> collect = Stream.of("a", "b", "c", "d").collect(Collectors.toList());
        collect.forEach(System.out::println);
    }

所有总结操作的方法列表

方法描述
boolean allMatch(Predicate p)检查是否匹配所有元素
boolean anyMatch(Predicate p)检查是否至少匹配一个元素
boolean noneMatch(Predicate p)检查是否没有匹配所有元素
Optional findFirst()返回第一个元素
Optional findAny()返回当前流中的任意元素
long count()返回流中元素总数
Optional max(Comparator c)返回流中最大值
Optional min(Comparator c)返回流中最小值
void forEach(Consumer c)迭代
T reduce(T iden, BinaryOperator b)可以将流中元素反复结合起来,得到一个值。返回 T
U reduce(BinaryOperator b)可以将流中元素反复结合起来,得到一个值。返回 Optional
R collect(Collector c)将流转换为其他形式。接收一个 Collector接口的实现,用于给Stream中元素做汇总的方法
  开发测试 最新文章
pytest系列——allure之生成测试报告(Wind
某大厂软件测试岗一面笔试题+二面问答题面试
iperf 学习笔记
关于Python中使用selenium八大定位方法
【软件测试】为什么提升不了?8年测试总结再
软件测试复习
PHP笔记-Smarty模板引擎的使用
C++Test使用入门
【Java】单元测试
Net core 3.x 获取客户端地址
上一篇文章      下一篇文章      查看所有文章
加:2022-04-07 23:01:13  更:2022-04-07 23:02:08 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/18 0:28:37-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码