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

【Java基础 下】 026 -- 集合进阶(不可变集合、Stream流、方法引用)

目录

一、不可变集合

1、创建不可变集合的应用场景

2、创建不可变集合的书写格式

①、不可变的List集合

②、不可变的Set集合

③、不可变的Map集合

3、小结

二、Stream流

1、体验Stream流的作用

2、Stream流的思想

3、Stream流的使用步骤

①、单列集合获取Stream流

②、双列集合获取Stream流(先转成keySet()或entrySet())

③、数组获取Stream流(Arrays.stream())

④、一堆零散数据(Stream.of())

4、Stream流的中间方法

①、filter方法(过滤)

②、limit方法(获取前几个元素)

③、skip方法(跳过前几个元素)

④、练习

⑤、distinct方法(元素去重)

⑥、concat方法(合并a和b两个流为一个流)

⑦、map方法(类型转换)

5、Stream流的终结方法

①、forEach方法(遍历)

②、count方法(统计)

③、toArray方法(收集流中的数据,放到数组中)

④、collect方法(收集流中的数据,放到集合中)

6、小结

三、方法引用

1、什么是方法引用?

①、示例代码

②、小结

2、方法引用的分类

①、引用静态方法(类名::静态方法)

②、引用成员方法(对象::成员方法)

③、引用构造方法(类名::new)

④、其它调用方式(Ⅰ. 使用类名引用成员方法 Ⅱ. 引用数组的构造方法)

3、小结

4、方法引用综合小练习

①、练习1

②、练习 2

③、练习3


一、不可变集合

1、创建不可变集合的应用场景

2、创建不可变集合的书写格式

①、不可变的List集合

示例代码:

②、不可变的Set集合

③、不可变的Map集合

10个参数以下使用Map.of()

超过10个使用copyOf()

3、小结

二、Stream流

Stream是Java 8 API添加的一个新的抽象,称为流Stream,以一种声明性方式处理数据集合(侧重对于源数据计算能力的封装,并且支持序列与并行两种操作方式)。流是个抽象的概念,是对输入输出设备的抽象,在Java程序中,对于数据的输入/输出操作都是以“流”的方式进行。

Stream流是从支持数据处理操作的源生成的元素序列,源可以是数组、文件、集合、函数。流不是集合元素,它不是数据结构并不保存数据,它的主要目的在于计算

Stream流是对集合(Collection)对象功能的增强,与Lambda表达式结合,可以提高编程效率、间接性和程序可读性。

1、体验Stream流的作用

普通代码:

Stream流:

2、Stream流的思想

3、Stream流的使用步骤

示例代码:

①、单列集合获取Stream流

该代码等于注释掉的一大堆

②、双列集合获取Stream流(先转成keySet()或entrySet())

③、数组获取Stream流(Arrays.stream())

④、一堆零散数据(Stream.of())

4、Stream流的中间方法

示例代码:

①、filter方法(过滤)

②、limit方法(获取前几个元素)

③、skip方法(跳过前几个元素)

④、练习

⑤、distinct方法(元素去重)

自定义JavaBean需要中间去重写hashCode和equals方法

⑥、concat方法(合并a和b两个流为一个流)

⑦、map方法(类型转换)

可简化为:

5、Stream流的终结方法

①、forEach方法(遍历)

②、count方法(统计)

③、toArray方法(收集流中的数据,放到数组中)

④、collect方法(收集流中的数据,放到集合中)

收集到List集合中:

收集到Set集合中:

收集到Map集合中:

6、小结

三、方法引用

1、什么是方法引用?

方法引用就是把已经有的方法拿过来用,当做函数式接口中抽象方法的方法体

函数式接口:FunctionInterface

①、示例代码

匿名内部类:

lambda表达式简化:

方法引用:

②、小结

2、方法引用的分类

①、引用静态方法(类名::静态方法)

示例代码:

Stream流方法:

方法引用:

②、引用成员方法(对象::成员方法)

示例代码1:

以前的方法:

方法引用:

工具类:

引用成员方法 - 其他类:

引用成员方法 - 本类:

示例代码2:GUI界面点击事件引用方法

以前的做法:实现ActionListener

方法引用:

③、引用构造方法(类名::new)

示例代码:

只需要保证构造方法结束后生成的对象与抽象方法的返回值保持一致就可以了

④、其它调用方式(Ⅰ. 使用类名引用成员方法 Ⅱ. 引用数组的构造方法)

I、使用类名引用成员方法(类名::成员方法)—— 不是所有类的成员方法都可以引用的

示例代码:

改成方法引用:

局限性:

举例:

实例:

Ⅱ、引用数组的构造方法(数据类型[]::new)

示例代码:

3、小结

4、方法引用综合小练习

①、练习1

②、练习 2

③、练习3

相当于练习1和练习2的结合:(在Student.java中新增了一个方法getNameAge,用以返回对应格式的字符串)

 

http://www.lryc.cn/news/17545.html

相关文章:

  • SAP 跨工厂或特定工厂的物料状态设置
  • jupyter的安装步骤
  • Optional使用详解
  • 如何实现文件高速传输,推荐镭速高速文件传输解决方案
  • SpringBoot整合Mybatis+人大金仓(kingbase8)
  • TPM 2.0实例探索2 —— LUKS磁盘加密(3)
  • 嵌入式Debian主机可接HDMI显示
  • 驱动程序开发:基于ICM20608六轴传感器 --- 使用Regmap API 的 SPI 读取数据 之 IIO驱动
  • 专利撰写 为什么要申请专利 申请专利对个人有什么利益关系 专利申请实例 如何申请专利 专利申请办理流程
  • yolov5/6/7系列模型训练日志结果数据对比分析可视化
  • ppppp2-23
  • 【GeoDjango框架解析——读取矢量数据写入postgis数据库】
  • 注意啦!如何通过广告吸引客户直接下单?
  • ThinkPHP ^6图片操作进阶
  • 深入理解JS作用域链与执行上下文
  • UnityEditor编辑器扩展代码实现Project搜索的实现功能和切换Component等
  • SKAdNetwork:从0到1
  • Spring+MVC+MYbatis注解开发
  • Redis主从复制过程
  • Spring boot开启定时任务的三种方式(内含源代码+sql文件)
  • Tekton实战案例--S2I
  • 四、使用类实现功能
  • Java多线程不安全的例子
  • vivo X Flip会是高端手机市场的又一折叠屏爆款吗?
  • MySQL中MVCC如何解决不可重复读以及幻读?
  • 设计模式第八讲:观察者模式和中介者模式详解
  • 关于 mac 本地配置域名能 ping 通,但是浏览器不能访问的问题(而其他电脑操作可访问)
  • 【代码随想录二刷】Day23-二叉树-C++
  • Linux GPIO 开发指南
  • 记一次后端生成Zip文件通过浏览器下载后文件损坏,无法打开,不可预知的末端错误,下载后文件比源文件增大