当前位置: 首页 > article >正文

Stream流常见操作

.stream() 常用方法

.forEach()

该方法接收一个 Consumer 接口函数,会将每一个流元素交给该函数进行处理

.filter():过滤

该接口接收一个 Predicate 函数式接口参数(可以是一个Lambda或方法引用)作为筛选条件。

private static void filterDemo(){
        String[] array = { "张无忌", "张三丰", "周芷若" };
        Stream<String> stream = Stream.of(array);
        Stream<String> result = stream.filter(s -> s.startsWith("张"));
        result.forEach(s -> System.out.println(s));
    }

.map() : 映射

如果需要将流中的元素映射到另一个流中,可以使用 map 方法。
该接口需要一个 Function 函数式接口参数,可以将当前流中的T类型数据转换为另一种R类型的流。

private static void mapDemo(){
        String[] array = {"10", "12", "18"};
        Stream<String> stringStream = Stream.of(array);
        Stream<Integer> integerStream = stringStream.map(s -> Integer.parseInt(s));
        integerStream.forEach(integer -> System.out.println(integer));
    }

count():统计流中的元素个数

正如旧集合 Collection 当中的 size 方法一样,流提供 count 方法来数一数其中的元素个数
long num = stream.count();

limit():取用前几个

skip():跳过前几个

concat():组合

private static void concatDemo(){
        Stream<String> stream1 = Stream.of("张三");
        Stream<String> stream2 = Stream.of("李四");
        Stream<String> stream = Stream.concat(stream1,stream2);
        stream.forEach(s -> System.out.println(s));
    }

sorted() :排序

元素收集

1.收集到List集合:

流对象.collect( Collectors.toList() )

获得List集合。

2.收集到Set集合:

流对象.collect( Collectors.toSet() )

获得Set集合。

3.收集到数组:

流对象. toArray()

由于泛型擦除的原因,返回值类型是Object[]

字符串拼接

参数为连接符,返回值为一个集合。

private static void joinDemo(){
        List<String> list = new ArrayList<>();
        list.add("张无忌");
        list.add("周芷若");
        list.add("赵敏");
        list.add("张强");
        list.add("张三丰");
        System.out.println(list);
        System.out.println(list.stream().collect(Collectors.joining(",")));
    }

分组

归约 reduce()

rudece方法的功能是从一个流中生成一个值,reduce方法参数为一个函数,返回值为Optional对象。

private static void reduceDemo(){
        List<Integer> num = Arrays.asList(1, 2, 4, 5, 6, 7);
        // 求和
        num.stream().reduce((x, y) -> x+y ).ifPresent(System.out::println);
        // 求最大值
        num.stream().reduce(Integer::max).ifPresent(System.out::println);
    }

distinct() 去重

学习知乎:Stream流处理介绍以及Stream的基本操作


http://www.kler.cn/a/132991.html

相关文章:

  • 嵌入式硬件杂谈(二)-芯片输入接入0.1uf电容的本质(退耦电容)
  • html + css 自适应首页布局案例
  • JavaEE 重要的API阅读
  • 实战:一文讲透模糊匹配的三种方式的区别
  • 24 年第十届数维杯国际数模竞赛赛题浅析
  • docker部署bitnami/etcd:latest
  • 微信(小程序开发): 解决播放音乐没有声音的情况 代码不报错的情况下依旧没有声音的解决方案
  • vb.net 实时监控双门双向门禁控制板源代码
  • Michael Jordan最新报告:去中心化机器学习中的契约、不确定性和激励
  • 数据分析思维与模型:相关分析法
  • AIGC: 关于ChatGPT这个智能工具带来的几点思考
  • 【AI应用】 AI语音转换
  • STM32外部中断(EXTI)与RTOS多任务处理的协同设计
  • springBoot集成websocket实时消息推送
  • <MySQL> 什么是JDBC?如何使用JDBC进行编程?
  • 系列四、JVM的内存结构【本地接口(Native Interface)】
  • leecode | 数位和相等数对的最大和
  • 美国经典人工智能教材第3版出版!
  • 【shell 常用脚本30例】
  • vue的生命周期分别是什么?
  • java 访问sqlserver 和 此驱动程序不支持jre1.8错误
  • leetcoe刷题日志-6N字形变换
  • 【数据结构初阶】链表OJ
  • 经典ctf ping题目详解 青少年CTF-WEB-PingMe02
  • 某60区块链安全之重入漏洞实战记录
  • 整理MLAI学习路径图