Stream浅解析

Stream流浅解析

package com.w.earn.share;import java.util.*;
import java.util.stream.Collectors;/*** @Author yang kai bo* @Date 2024/5/26 19:43* @Description*  概念:stream流是一种对 Java 集合运算和表达的高阶抽象。*  优点:写法简单,代码简洁,效率高。*  原理:stream流将要处理的元素看作一种流,在管道中传输时,可以在管道的节点上进行筛选、排序、聚合等操作处理,经过最终操作最后得到前面处理的结果。*  eg: stream +-----> filter+-> sorted+-> map+-> collect*/
public class StreamFlow {public static void main(String[] args) {function1();System.out.println("========================================实用场景=======================================");function2();}/*** 基础用法*/public static void function1() {List<String> arrayList = Arrays.asList("abc", "", "bc", "efg", "abcd", "", "jkl");// 1、forEach 迭代arrayList.forEach(System.out::print);System.out.println("=========================================================================================");// 2、map 映射每个元素到对应的结果List<String> collectList = arrayList.stream().map(o -> o + "==>").collect(Collectors.toList());System.out.println(collectList);System.out.println("=========================================================================================");// 3、filter 过滤器,过滤出来指定的元素List<String> filterList = arrayList.stream().filter(o -> o.startsWith("a")).collect(Collectors.toList());System.out.println(filterList);System.out.println("=========================================================================================");// 4、limit 获取指定数量的数据System.out.println("=========================================================================================");List<String> listCollect = arrayList.stream().limit(3).collect(Collectors.toList());System.out.println(listCollect);// 5、sortedSystem.out.println("=========================================================================================");List<String> sortedCollect = arrayList.stream().sorted().collect(Collectors.toList());System.out.println(sortedCollect);System.out.println("=========================================================================================");// 6、并行(parallel)程序,多线程,多个任务同时处理List<String> parallelCollect1 = arrayList.parallelStream().map(o -> o + "==>").collect(Collectors.toList());List<String> parallelCollect2 = arrayList.parallelStream().filter(o -> o.startsWith("a")).collect(Collectors.toList());List<String> parallelCollect3 = arrayList.parallelStream().limit(3).collect(Collectors.toList());List<String> parallelCollect4 = arrayList.parallelStream().sorted().collect(Collectors.toList());System.out.println(parallelCollect1);System.out.println(parallelCollect2);System.out.println(parallelCollect3);System.out.println(parallelCollect4);System.out.println("=========================================================================================");// 7、CollectorsString mergedString1 = arrayList.stream().filter(string -> !string.isEmpty()).collect(Collectors.joining("<==>"));List<String> mergedString2 = arrayList.stream().filter(string -> !string.isEmpty()).collect(Collectors.toList());System.out.println("合并字符串: " + mergedString1);System.out.println("合并字符串: " + mergedString2);System.out.println("=========================================================================================");// 8、统计IntSummaryStatistics intSummaryStatistics = arrayList.stream().mapToInt(o -> o.length()).summaryStatistics();System.out.println(intSummaryStatistics.getAverage());System.out.println(intSummaryStatistics.getMax());System.out.println(intSummaryStatistics.getCount());System.out.println(intSummaryStatistics.getMin());System.out.println(intSummaryStatistics.getSum());System.out.println("=========================================================================================");}// 实用一点的用法public static void function2() {Role role1 = new Role();role1.setAge(18);role1.setName("zhangsan");Role role2 = new Role();role2.setAge(15);role2.setName("lisi");Role role3 = new Role();role3.setAge(19);role3.setName("wangwu");Role role4 = new Role();role4.setAge(11);role4.setName("liming");List<Role> list = new ArrayList<>();list.add(role1);list.add(role2);list.add(role3);list.add(role4);// 1、anymatch 只要有符合条件的元素,则返回trueboolean anyMatch1 = list.stream().anyMatch(o -> o.getAge() < 20);boolean anyMatch2 = list.stream().anyMatch(o -> o.getAge() > 20);System.out.println(anyMatch1);System.out.println(anyMatch2);System.out.println("=========================================================================================");// 2、allmatch 全部元素都符合条件,则返回trueboolean allMatch1 = list.stream().allMatch(o -> o.getAge() < 18);boolean allMatch2 = list.stream().allMatch(o -> o.getAge() < 20);System.out.println(allMatch1);System.out.println(allMatch2);System.out.println("=========================================================================================");// 3、nomatch 没有元素符合条件,则返回trueboolean noneMatch1 = list.stream().noneMatch(o -> o.getAge() < 18);boolean noneMatch2 = list.stream().noneMatch(o -> o.getAge() > 20);System.out.println(noneMatch1);System.out.println(noneMatch2);System.out.println("=========================================================================================");// 4、对象字段排序,升序降序List<Role> sortedCollect = list.stream().sorted(Comparator.comparing(Role::getAge)).collect(Collectors.toList());System.out.println(sortedCollect);List<Role> sortedCollect2 = list.stream().sorted(Comparator.comparing(Role::getAge).reversed()).collect(Collectors.toList());System.out.println(sortedCollect2);System.out.println("=========================================================================================");Role role5 = new Role();role5.setAge(18);role5.setName("wudi");Role role6 = new Role();role6.setAge(18);role6.setName("jimo");list.add(role5);list.add(role6);// 5、对象多个字段排序List<Role> sortedCollect4 = list.stream().sorted(Comparator.comparing(Role::getAge)).collect(Collectors.toList());List<Role> sortedCollect5 = list.stream().sorted(Comparator.comparing(Role::getAge).thenComparing(Role::getName)).collect(Collectors.toList());System.out.println(sortedCollect4);System.out.println(sortedCollect5);System.out.println("=========================================================================================");// 6、找到第一个出现的数据Optional<Role> first = list.stream().sorted(Comparator.comparing(Role::getAge)).findFirst();System.out.println(first.get());System.out.println("=========================================================================================");// 7、去重List<Integer> list1 = list.stream().map(o -> o.getAge()).distinct().collect(Collectors.toList());System.out.println(list1);}
}class Role{private String name;private int age;public String getName() {return name;}public int getAge() {return age;}public void setName(String name) {this.name = name;}public void setAge(int age) {this.age = age;}@Overridepublic String toString() {return "Role{" +"name='" + name + '\'' +", age=" + age +'}';}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/16246.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

python内置函数map/filter/reduce详解

在Python中&#xff0c;map(), filter(), 和 reduce() 是内置的高级函数(实际是class)&#xff0c;用于处理可迭代对象&#xff08;如列表、元组等&#xff09;的元素。这些函数通常与lambda函数一起使用&#xff0c;以简洁地表达常见的操作。下面我将分别解释这三个函数。 1. …

mac安装git心得

我是买了一个新的mac但是当我安装git的时候遇见了很多问题 安装不上各种报错 首先我们直接打开git网址&#xff0c;然后打开mac的命令提示&#xff0c;里边输入git大概1g左右&#xff0c;下载完了直接好了

持续总结中!2024年面试必问 20 道 Redis面试题(七)

上一篇地址&#xff1a;持续总结中&#xff01;2024年面试必问 20 道 Redis面试题&#xff08;六&#xff09;-CSDN博客 十三、Redis集群的主从复制模型是怎样的&#xff1f; Redis集群的主从复制模型是一种高可用性架构&#xff0c;它允许数据在多个节点之间进行复制&#x…

pod 之资源限制 与健康检查

目录 一 资源限制 1&#xff0c;资源限制是什么 2&#xff0c;资源限制的 标准 3&#xff0c; k8s 创pod 显示 OOMKILLED 是 requests小了 还是limits小了 4&#xff0c; Pod 和 容器 的资源请求和限制 &#xff08;yaml&#xff09; 5&#xff0c; CPU 资源单位 6&…

xgboost项目实战-保险赔偿额预测与信用卡评分预测001

目录 算法代码 原理 算法流程 xgb.train中的参数介绍 params min_child_weight gamma 技巧 算法代码 代码获取方式&#xff1a;链接&#xff1a;https://pan.baidu.com/s/1QV7nMC5ds5wSh-M9kuiwew?pwdx48l 提取码&#xff1a;x48l 特征直方图统计&#xff1a; fig, …

这次泰迪杯应该不能答辩

检查了里面还有没修改完的&#xff0c;只能但愿没看到 魔改了又去投水赛&#xff0c;理论加应用

各大模型厂商API使用:百度、阿里、豆包、kimi、deepseek

百度ERNIE(支持requests接口) ERNIE Speed、ERNIE Lite免费 免费测试下来模型ernie_speed输出吞吐量计算20-30来个,“{length/cost} tokens/s” 输出总长度/耗时 https://qianfan.cloud.baidu.com/ 文档: https://cloud.baidu.com/doc/WENXINWORKSHOP/s/dltgsna1o a…

JavaScript-函数的使用

函数的语法 函数就是包裹在花括号里面的代码&#xff0c;当用户需要多次使用 某个代码时&#xff0c;可以用函数包裹住这个代码&#xff0c;然后调用函数即可 比如js自己封装好的函数doucument.write(),console.log()等等 function functionname() {/*代码块*/ } 函数的组成部…

Flink Kylinv10 java8 Flink镜像制作

1&#xff09;基于麒麟v10版本制作JDK8基础镜像在这里插入代码片 FROM kylinv10/kylin:b09 RUN set -ex; \dnf install -y wget java-1.8.0-openjdk java-1.8.0-openjdk-devel tar; \yum clean all RUN java -version CMD ["echo", "kylinv10 JDK 8 image is …

智能进化:深度学习与进化计算的融合艺术

《进化深度学习》这本书深入探索了进化计算&#xff08;EC&#xff09;在深度学习领域的应用&#xff0c;为读者提供了一套丰富而实用的技术工具&#xff0c;这些工具可以贯穿深度学习的整个过程&#xff0c;助力研究者们解决各种复杂的问题。书中不仅详细介绍了遗传算法和进化…

【嵌入式DIY实例】-OLED显示DS1307/DS3231实时时钟

OLED显示DS1307/DS3231实时时钟 文章目录 OLED显示DS1307/DS3231实时时钟1、DS1307/DS1321介绍2、硬件准备3、代码实现本文将展示了如何使用ESP8266 NodeMCU开发板、DS3231 RTC 芯片和 SSD1306 OLED 显示屏(12864 像素)构建实时时钟。 DS3231 RTC有一个内置的温度传感器,我们…

力扣:344. 反转字符串

344. 反转字符串 编写一个函数&#xff0c;其作用是将输入的字符串反转过来。输入字符串以字符数组 s 的形式给出。 不要给另外的数组分配额外的空间&#xff0c;你必须原地修改输入数组、使用 O(1) 的额外空间解决这一问题。 示例 1&#xff1a; 输入&#xff1a;s ["…

Win11禁用数字强制签名:解放硬件选择,自由安装应用

工具原料&#xff1a; 操作系统版本&#xff1a;Windows 11 品牌型号&#xff1a;任意电脑或手机品牌型号 软件版本&#xff1a;任意版本的Win11操作系统 一、禁用数字强制签名的方法 方法一&#xff1a;使用高级启动选项 在Win11中&#xff0c;可以通过高级启动选项来禁…

怎么理解直接程序控制和中断方式?

直接程序控制 看完之后是不是依然一头雾水&#xff1f;来看下面两个例子 无条件传送 假设你正在使用键盘打字。当你敲击键盘上的一个键时&#xff0c;键盘会立即产生一个信号&#xff08;即输入数据&#xff09;&#xff0c;并且这个信号会立即被电脑接收。在这个过程中&…

比较两列数据

点其中一个数据 删掉S&#xff0c;回车 大的标红

v-cloak 用于在 Vue 实例渲染完成之前隐藏绑定的元素

如果你是后端开发者&#xff08;php&#xff09;&#xff0c;在接触一些vue2开发的后台时&#xff0c;会发现有这段代码&#xff1a; # CDN <script src"https://cdn.jsdelivr.net/npm/vue2/dist/vue.js"></script> # 或 <script src"https://cd…

三十六计的笔记

系列文章目录 三十六计的笔记 文章目录 系列文章目录1、瞒天过海2、围魏救赵3、借刀杀人4、以逸待劳5、趁火打劫6、声东击西7、无中生有8、暗渡陈仓9、隔岸观火10、笑里藏刀11、李代桃僵12、顺手牵羊13、打草惊蛇14、借尸还魂15、调虎离山16、欲擒故纵17、抛砖引玉18、擒贼擒王…

MongoDB 单点 Docker 启动及其持久化配置

MongoDB 单点 Docker 启动及其持久化配置 Docker Image Version mongodb/mongodb-community-server:5.0-ubuntu2004 单点删除 docker rm -f mongo-single单点启动 docker run -d --name mongo-single --log-driverjson-file \ --log-opt max-size100m --log-opt max-file3…

9.3 Go语言入门(变量声明和函数调用)

Go语言入门&#xff08;变量声明和函数调用&#xff09; 目录二、变量声明和函数调用1. 变量声明1.1 使用 var 关键字声明1.2 简短声明1.3 零值1.4 常量 2. 函数调用2.1 函数定义2.2 多个返回值2.3 命名返回值2.4 可变参数2.5 匿名函数和闭包 目录 Go 语言&#xff08;Golang&a…

粤嵌—2024/5/21—打家劫舍(✔)

代码实现&#xff1a; int rob(int *nums, int numsSize) {if (numsSize 1) {return nums[0];}if (numsSize 2) {return fmax(nums[0], nums[1]);}int dp[numsSize];dp[0] nums[0];dp[1] fmax(nums[0], nums[1]);for (int i 2; i < numsSize; i) {dp[i] fmax(dp[i - 1…