java的Stream流

server/2025/2/2 19:28:58/

一、遍历与统计

java">  // forEach遍历ArrayList<String> list1 = new ArrayList<>();Collections.addAll(list1, "张无忌", "张三A", "张三B", "张三C","周五", "李四", "赵本三");list1.stream().forEach(System.out::println);// count 统计Long num = list1.stream().count();System.out.println(num);// toArray 收集变成数组String[] str = list1.stream().toArray(value -> new String[value]);System.out.println(Arrays.toString(str));

二、Stream的常见方法

1、filter 过滤,limit获取前几个元素,skip跳过前几个元素

java">        ArrayList<String> list1 = new ArrayList<>();Collections.addAll(list1, "张无忌", "张三A", "张三B", "张三C","周五", "李四", "赵本三");// 需求:张开头,最大数量为3,跳过第一个,打印list1.stream().filter(s -> s.startsWith("张")) //张开头.limit(3) // 最大数量为3.skip(1) //跳过第一个.forEach(System.out::println);/*结果:张三A张三B*/

2、map 转化流转的两种数据类型

java">        ArrayList<String> list1 = new ArrayList<>();Collections.addAll(list1, "张无忌-1", "张三A-2","张三B-3", "张三C-4","周五-5", "李四-6", "赵本三-7");System.out.println(list1);// 字符串转为整型list1.stream().map(s -> Integer.parseInt(s.split("-")[1])).forEach(s-> System.out.print(s + " "));

3、distinct去重

java">ArrayList<String> list1 = new ArrayList<>();Collections.addAll(list1, "张无忌", "张无忌", "张无忌", "张三C","周五", "李四", "赵本三");list1.stream().distinct().forEach(System.out::println);

4、concat 合并两个流

java">ArrayList<String> list1 = new ArrayList<>();Collections.addAll(list1, "a","b","c");ArrayList<String> list2 = new ArrayList<>();Collections.addAll(list2, "d","e","f");Stream.concat(list1.stream(),list2.stream()).forEach(System.out::println);

 三、Stream的收集

        使用Java的Stream API对一个包含字母-性别-编号格式字符串的ArrayList进行处理:首先通过filter筛选出性别为“男”的元素,分别收集到ListSet中;然后通过toMap将每个字符串的字母作为键、编号作为值,收集到Map中,最终实现了对数据的分类和转换。

java">ArrayList<String> list = new ArrayList<>();Collections.addAll(list, "A-男-01", "B-男-02", "C-男-03","D-男-04", "E-女-05","F-女-06", "G-男-07");// 需求一:用list把男生收集起来List<String> list1 = list.stream().filter(s -> "男".equals(s.split("-")[1])).collect(Collectors.toList());System.out.println(list1);// 需求二:用set把男生收集起来Set<String> list2 = list.stream().filter(s -> "男".equals(s.split("-")[1])).collect(Collectors.toSet());System.out.println(list2);// 需求三:用map收集所有信息,字母对应编号// ps:map收集不能有两个键相同Map<String, Integer> map = list.stream().collect(Collectors.toMap(s -> s.split("-")[0],s -> Integer.parseInt(s.split("-")[2])));System.out.println(map);


http://www.ppmy.cn/server/164408.html

相关文章

JWT 实战:在 Spring Boot 中的使用

文章目录 一、JWT简介二、JWT 的结构三、JWT 的生成过程四、JWT 验证过程五、JWT 的应用场景六、JWT的实现6.1 登录接口6.2 校验 Token 接口6.3 jwtUtil 类 七、总结 一、JWT简介 JWT&#xff08;JSON Web Token&#xff09;是一种用于客户端和服务器之间安全传输信息的开放标…

kamailio-ACC_RADIUS模块详解,附加AAA协议

AAA 协议详解 AAA 是 Authentication&#xff08;认证&#xff09;、Authorization&#xff08;授权&#xff09; 和 Accounting&#xff08;计费&#xff09; 的缩写&#xff0c;是网络管理中用于控制用户访问资源的核心框架。AAA 协议的主要目的是确保只有合法用户可以访问网…

MapReduce简单应用(一)——WordCount

目录 1. 执行过程1.1 分割1.2 Map1.3 Combine1.4 Reduce 2. 代码和结果2.1 pom.xml中依赖配置2.2 工具类util2.3 WordCount2.4 结果 参考 1. 执行过程 假设WordCount的两个输入文本text1.txt和text2.txt如下。 Hello World Bye WorldHello Hadoop Bye Hadoop1.1 分割 将每个文…

面试问题知识

文章目录 1. Linux 和 CentOS基础指令&#xff1a;VMware 和 CentOS&#xff1a;扩充问题&#xff1a; 2. 前端开发&#xff08;JS、CSS&#xff09;JavaScript&#xff1a;CSS&#xff1a;扩充问题&#xff1a; 3. 数据库&#xff08;MySQL&#xff09;基础语法&#xff1a;事…

Go学习:类型转换需注意的点 以及 类型别名

目录 1. 类型转换 2. 类型别名 1. 类型转换 在从前的学习中&#xff0c;知道布尔bool类型变量只有两种值true或false&#xff0c;C/C、Python、JAVA等编程语言中&#xff0c;如果将布尔类型bool变量转换为整型int变量&#xff0c;通常采用 “0为假&#xff0c;非0为真”的方…

代理模式 - 代理模式的应用

引言 代理模式&#xff08;Proxy Pattern&#xff09;是一种结构型设计模式&#xff0c;它允许你提供一个代理对象来控制对另一个对象的访问。代理对象通常会在客户端和目标对象之间起到中介的作用&#xff0c;从而可以在不改变目标对象的情况下&#xff0c;增加额外的功能或控…

MySQL知识点总结(十七)

在从属服务器上执行RESET SLAVE命令时&#xff0c;会发生哪些操作&#xff1f; RESET SLAVE命令会断开从属服务器与主服务器的连接&#xff0c;以重置从属服务器&#xff0c;具体效果如下&#xff1a;清除 master.info和relay.log资料档案库删除所有中继日志启动新的中继日志文…

基于FPGA的BT656编解码

概述 BT656全称为“ITU-R BT.656-4”或简称“BT656”,是一种用于数字视频传输的接口标准。它规定了数字视频信号的编码方式、传输格式以及接口电气特性。在物理层面上,BT656接口通常包含10根线(在某些应用中可能略有不同,但标准配置为10根)。这些线分别用于传输视频数据、…