java的Stream流

ops/2025/2/5 11:42:02/

一、遍历与统计

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/ops/155851.html

相关文章

C++11中的bind

官方文档对于bind接口的概述解释&#xff1a;Bind function arguments 在C11中&#xff0c;std::bind 是一个非常有用的工具&#xff0c;用于将函数、成员函数或函数对象与特定的参数绑定在一起&#xff0c;生成一个新的可调用对象。std::bind 可以用于部分应用函数参数、改变…

Vue3 完整学习笔记 - 第二部分

Vue3 完整学习笔记 - 第二部分 2. Vue3 响应式系统深入 2.1 ref 深入理解 重点掌握&#xff1a; ref 的工作原理基本类型和对象类型的处理差异template 中的自动解包 核心示例&#xff1a; <template><div><!-- 模板中自动解包&#xff0c;无需 .value --…

基于springboot+vue的中药实验管理系统(源码+数据库+文档)

中药实验管理系统 目录 基于springbootvue的中药实验管理系统 一、前言 二、系统设计 三、系统功能设计 四、数据库设计 五、核心代码 六、论文参考 七、最新计算机毕设选题推荐 八、源码获取&#xff1a; 博主介绍&#xff1a;✌️大厂码农|毕设布道师&#xff0c;…

51c视觉~CV~合集10

我自己的原文哦~ https://blog.51cto.com/whaosoft/13241694 一、CV创建自定义图像滤镜 热图滤镜 这组滤镜提供了各种不同的艺术和风格化光学图像捕捉方法。例如&#xff0c;热滤镜会将图像转换为“热图”&#xff0c;而卡通滤镜则提供生动的图像&#xff0c;这些图像看起来…

Spring Boot基本项目结构

要写一个Spring Boot 项目对于新手小白来说&#xff0c;首先要了解Spring Boot 的基本架构&#xff0c;学会如何创建一个简单的spring boot项目。 springboot 基于maven做的&#xff08;前提保证maven是装好并且IDEA配置好的&#xff09;&#xff08;面向接口编程&#xff09;…

深度解析近期爆火的 DeepSeek

最近&#xff0c;AI 领域有个名字频繁出现在大众视野 ——DeepSeek&#xff0c;它的火爆程度就像一颗投入平静湖面的巨石&#xff0c;激起千层浪。今天&#xff0c;咱们就来深入了解一下这个 “AI 新星”。 官网&#xff1a;DeepSeek - 探索未至之境 DeepSeek 是什么 DeepSeek…

试用ChatGPT开发一个大语言模型聊天App

参考官方文档&#xff0c;安装android studio https://developer.android.com/studio/install?hlzh-cn 参考这个添加permission权限&#xff1a; https://blog.csdn.net/qingye_love/article/details/14452863 参考下面链接完成Android Studio 给项目添加 gradle 依赖 ht…

git push到远程仓库时无法推送大文件

一、错误 remote: Error: Deny by project hooks setting ‘default’: size of the file ‘scientific_calculator’, is 164 MiB, which has exceeded the limited size (100 MiB) in commit ‘4c91b7e3a04b8034892414d649860bf12416b614’. 二、原因 本地提交过大文件&am…