Java stream流和方法引用
2.Stream流2.1体验Stream流【理解】案例需求按照下面的要求完成集合的创建和遍历创建一个集合存储多个字符串元素把集合中所有以张开头的元素存储到一个新的集合把张开头的集合中的长度为3的元素存储到一个新的集合遍历上一步得到的集合Stream流的常见生成方式【应用】Stream流的思想Stream流的三类方法获取Stream流创建一条流水线,并把数据放到流水线上准备进行操作中间方法流水线上的操作一次操作完毕之后,还可以继续进行其他操作终结方法一个Stream流只能有一个终结方法是流水线上的最后一个操作生成Stream流的方式Collection体系集合使用默认方法stream()生成流 default StreamE stream()Map体系集合把Map转成Set集合间接的生成流数组通过Arrays中的静态方法stream生成流同种数据类型的多个数据通过Stream接口的静态方法of(T... values)生成流2.3Stream流中间操作方法【应用】概念中间操作的意思是,执行完此方法之后,Stream流依然可以继续执行其他操作常见方法方法名说明StreamT filter(Predicate predicate)用于对流中的数据进行过滤StreamT limit(long maxSize)返回此流中的元素组成的流截取前指定参数个数的数据StreamT skip(long n)跳过指定参数个数的数据返回由该流的剩余元素组成的流static T StreamT concat(Stream a, Stream b)合并a和b两个流为一个流StreamT distinct()返回由该流的不同元素根据Object.equals(Object) 组成的流2.4Stream流终结操作方法【应用】概念终结操作的意思是,执行完此方法之后,Stream流将不能再执行其他操作常见方法方法名说明void forEach(Consumer action)对此流的每个元素执行操作long count()返回此流中的元素数2.5Stream流的收集操作【应用】概念对数据使用Stream流的方式操作完毕后,可以把流中的数据收集到集合中常用方法方法名说明R collect(Collector collector)把结果收集到集合中工具类Collectors提供了具体的收集方式方法名说明public static T Collector toList()把元素收集到List集合中public static T Collector toSet()把元素收集到Set集合中public static Collector toMap(Function keyMapper,Function valueMapper)把元素收集到Map集合中3.方法引用3.1体验方法引用【理解】方法引用的出现原因在使用Lambda表达式的时候我们实际上传递进去的代码就是一种解决方案拿参数做操作那么考虑一种情况如果我们在Lambda中所指定的操作方案已经有地方存在相同方案那是否还有必要再写重复逻辑呢答案肯定是没有必要那我们又是如何使用已经存在的方案的呢这就是我们要讲解的方法引用我们是通过方法引用来使用已经存在的方案3.2方法引用符【理解】方法引用符:: 该符号为引用运算符而它所在的表达式被称为方法引用推导与省略如果使用Lambda那么根据“可推导就是可省略”的原则无需指定参数类型也无需指定的重载形式它们都将被自动推导如果使用方法引用也是同样可以根据上下文进行推导方法引用是Lambda的孪生兄弟3.3引用类方法【应用】​ 引用类方法其实就是引用类的静态方法格式类名::静态方法范例Integer::parseIntInteger类的方法public static int parseInt(String s) 将此String转换为int类型数据练习描述定义一个接口(Converter)里面定义一个抽象方法 int convert(String s);定义一个测试类(ConverterDemo)在测试类中提供两个方法一个方法是useConverter(Converter c)一个方法是主方法在主方法中调用useConverter方法3.4引用对象的实例方法【应用】​ 引用对象的实例方法其实就引用类中的成员方法格式对象::成员方法范例HelloWorld::toUpperCaseString类中的方法public String toUpperCase() 将此String所有字符转换为大写练习描述定义一个类(PrintString)里面定义一个方法public void printUpper(String s)把字符串参数变成大写的数据然后在控制台输出定义一个接口(Printer)里面定义一个抽象方法void printUpperCase(String s)定义一个测试类(PrinterDemo)在测试类中提供两个方法一个方法是usePrinter(Printer p)一个方法是主方法在主方法中调用usePrinter方法3.5引用类的实例方法【应用】​ 引用类的实例方法其实就是引用类中的成员方法格式类名::成员方法范例String::substringpublic String substring(int beginIndex,int endIndex)从beginIndex开始到endIndex结束截取字符串。返回一个子串子串的长度为endIndex-beginIndex练习描述定义一个接口(MyString)里面定义一个抽象方法String mySubString(String s,int x,int y);定义一个测试类(MyStringDemo)在测试类中提供两个方法一个方法是useMyString(MyString my)一个方法是主方法在主方法中调用useMyString方法3.6引用构造器【应用】​ 引用构造器其实就是引用构造方法l格式类名::new范例Student::new练习描述定义一个类(Student)里面有两个成员变量(name,age)并提供无参构造方法和带参构造方法以及成员变量对应的get和set方法定义一个接口(StudentBuilder)里面定义一个抽象方法Student build(String name,int age);定义一个测试类(StudentDemo)在测试类中提供两个方法一个方法是useStudentBuilder(StudentBuilder s)一个方法是主方法在主方法中调用useStudentBuilder方法

相关新闻

Windows 11 26H1 | 25H2 | 24H2 中文版、英文版 (x64、ARM64) 下载 (2026 年 2 月更新)

Windows 11 26H1 | 25H2 | 24H2 中文版、英文版 (x64、ARM64) 下载 (2026 年 2 月更新)

Windows 11 26H1 | 25H2 | 24H2 中文版、英文版 (x64、ARM64) 下载 (2026 年 2 月更新) Windows 11, version 26H1 | 25H2 | 24H2 Enterprise Arm64 x64 (updated Feb 2026) 请访问原文链接:https://sysin.org/blog/windows-11/ 查看最新版。原创作品,…

2026/7/4 16:35:03 阅读更多 →
[嵌入式系统-248]:单片机:键盘控制芯片

[嵌入式系统-248]:单片机:键盘控制芯片

键盘控制芯片(Keyboard Controller IC)是专为简化单片机(MCU)与多按键接口而设计的集成电路,适用于按键数量多、要求低功耗、高可靠性的场景。相比软件扫描矩阵键盘,它能显著降低 MCU 负担、提升响应速度、…

2026/7/4 16:35:02 阅读更多 →
兰溪民间故事《吕洞宾为啥肩背宝剑》

兰溪民间故事《吕洞宾为啥肩背宝剑》

兰溪民间故事《吕洞宾为啥肩背宝剑》据讲,吕洞宾刚得道成仙时,是没有宝剑背在肩上的,后来又为啥背一把宝剑呢?这里有一段来历。吕洞宾是个游仙,东南西北都有他的行迹。一日,他游到了“美人国”。美人国里没…

2026/7/4 16:35:23 阅读更多 →

最新新闻

AI辅助文献综述写作:Paperxie系统架构与实操指南

AI辅助文献综述写作:Paperxie系统架构与实操指南

1. 项目背景与核心价值作为一名在学术写作领域深耕多年的研究者,我深刻理解本科阶段学生在撰写文献综述时面临的困境。每次看到学生面对海量文献手足无措的样子,就让我想起自己当年熬夜整理参考文献的狼狈经历。这正是Paperxie诞生的初衷——用AI技术降低…

2026/7/4 16:40:50 阅读更多 →
大模型指纹识别技术:原理、攻防与实战应用

大模型指纹识别技术:原理、攻防与实战应用

1. 项目概述:当大模型学会“签名”,我们如何识别与应对? 最近在跟几个做AI安全的朋友聊天,大家不约而同地提到了一个词:“LLM指纹识别”。这听起来有点玄乎,指纹不是人的生物特征吗,怎么大语言模…

2026/7/4 16:38:50 阅读更多 →
AI冲击下数据岗位重构:国际人才策略与能力原子化实践

AI冲击下数据岗位重构:国际人才策略与能力原子化实践

1. 项目概述:这不是一份“就业报告”,而是一份人才迁徙路线图“2025年美国数据岗位市场”——光看标题,你可能以为这又是一份堆砌招聘平台统计数字、罗列热门职位名称的常规行业简报。但实际不是。我连续三年深度参与硅谷、纽约、奥斯汀三地的…

2026/7/4 16:36:50 阅读更多 →
STM32与MC6470 IMU的硬件协同与运动控制优化

STM32与MC6470 IMU的硬件协同与运动控制优化

1. MC6470与STM32L4S5ZI的硬件协同架构解析MC6470作为一款六轴惯性测量单元(IMU),其核心价值在于将三轴加速度计和三轴陀螺仪集成在单芯片方案中。在实际项目中,我测量到其加速度计量程可达16g,角速度测量范围达到2000dps,这对于大…

2026/7/4 16:34:49 阅读更多 →
XWiki路径遍历漏洞CVE-2025-55747复现与深度解析

XWiki路径遍历漏洞CVE-2025-55747复现与深度解析

1. 项目概述与漏洞背景 最近在梳理一些开源项目的安全公告时,XWiki的一个路径遍历漏洞(CVE-2025-55747)引起了我的注意。这个漏洞编号看着新鲜,但本质上又是一个经典的“输入验证不严”导致的安全问题。简单来说,攻击者…

2026/7/4 16:30:48 阅读更多 →
SpringBoot+Vue家政平台毕设实战:从工程化思维到生产级实现

SpringBoot+Vue家政平台毕设实战:从工程化思维到生产级实现

🚀 30款热门AI模型一站整合,DeepSeek/GLM/Claude 随心用,限时 5 折。 👉 点击领海量免费额度 你有没有过这样的经历:毕业设计选题时,面对“家政服务平台”这类看似普通的题目,感觉无从下手&a…

2026/7/4 16:30:48 阅读更多 →

日新闻

Memcached 1.6.43 发布:关键安全修复版本,多项问题得到解决

Memcached 1.6.43 发布:关键安全修复版本,多项问题得到解决

Memcached 1.6.43 正式发布,这是一个关键的安全修复版本,修复了多个方面的问题,还对部分功能进行了优化。 安全修复亮点 此次发布在安全修复上表现突出。binprot 避免了项目引用计数溢出,mcmc 因安全问题提升了上游版本号&#xf…

2026/7/4 0:04:29 阅读更多 →
终极指南:使用HMCL启动器跨平台畅玩Minecraft的完整解决方案

终极指南:使用HMCL启动器跨平台畅玩Minecraft的完整解决方案

终极指南:使用HMCL启动器跨平台畅玩Minecraft的完整解决方案 【免费下载链接】HMCL A Minecraft Launcher which is multi-functional, cross-platform and popular 项目地址: https://gitcode.com/gh_mirrors/hm/HMCL HMCL(Hello Minecraft! Lau…

2026/7/4 0:06:29 阅读更多 →
KMX63与PIC18F66K40在嵌入式HMI中的硬件协同与低功耗设计

KMX63与PIC18F66K40在嵌入式HMI中的硬件协同与低功耗设计

1. KMX63与PIC18F66K40的硬件协同架构解析KMX63作为一款三轴加速度计和磁力计组合传感器,与PIC18F66K40微控制器的搭配堪称嵌入式HMI开发的黄金组合。这套硬件组合的核心优势在于KMX63提供的高精度运动感知能力与PIC18F66K40强大的信号处理能力形成了完美互补。KMX6…

2026/7/4 0:06:29 阅读更多 →

周新闻

月新闻