day17_我的Java学习笔记 (不可变集合、Stream流、异常)



1. 创建不可变集合



①:不可变list集合
②:不可变set集合
③:不可变Map集合
2. Stream流
2.1 Stream流的概述









2.2 Stream流的获取





2.3 Stream流的常用API


filter:过滤
limit:只要前几个
skip:跳过前几个
map:加工方法
需求:把所有名称,都加工成一个学生对象
构造器引用 方法引用
concat:合并流
distinct:去除流中重复的元素
2.4 Stream流的综合应用



- 1.获取开发一部最高工资的员工
- 方式一:
- 方式二:
- 2.统计平均工资,去掉最高工资和最低工资
- 2.1 求出剩余员工的工资总和 (详见视频 02、Stream流体系.mp4 00:55:57/01:20:56)
由于这里这个栈没有提供求平均值/求和的方法,所以这里需要遍历每个元素,进行累加求和:
那我们需要在外面初始化一个局部变量接收累加后的和,但是我们发现这里是行不通的
这里可以使用共享变量,所有地方都可以访问,它是属于类的。
- 3.合并2个集合流,再统计
精度问题处理: (BigDecimal类, 可以解决精度问题)
2.5 收集Stream流


- 1.把元素收集到List集合中
- 2.把元素收集到Set集合中:去重复
- 3.把元素收集到数组中
[拓展]:如果非要声明成String类型呢
[拓展]:突发奇想:
- 发现不可修改,得到不可变集合,那不能用了
- 我们原来的这个,是可以修改的 -- 可变集合

3. 异常处理
3.1 异常的概述、体系





3.2 常见运行时异常

- 1.数组索引越界异常 (ArrayIndexOutOfBoundsException)
- 2.空指针异常(NullPointerException)
NullPointerException继承自RuntimeException (空指针异常,继承自运行异常,编译阶段不报错,运行时报错)
- 3.类型转换异常 (ClassCastException)
- 4.数学操作异常 (ArithmeticException)
- 5.数字转换异常 (NumberFormatException)
3.3 常见编译时异常








3.4 异常的默认处理流程


默认的异常处理机制并不好,一旦真的出现异常,程序就会立即死亡!
3.5 编译时异常的处理机制

3.5.1 异常处理方式1 -- throws
上面那种方式并不好,如果有多个异常,就要一直抛,很不好。
官方建议直接抛Exception。
规范做法:
方法 throws Exception {
}
3.5.2 异常处理方式2 -- try...catch...


方式1: Alt + Enter,选择第2个
方式2:代码全部选中后,Ctrl + Alt + T,选择第6个


3.5.3 异常方式3 -- 前两者结合



3.6 运行时异常的处理机制




3.7 异常处理使代码更文件的案例










3.8 自定义异常


3.8.1 自定义编译时异常
















3.8.2 自定义运行时异常






本文来自博客园,作者:子沐呐吖,转载请注明原文链接:https://www.cnblogs.com/SuperLee017/p/18145746



















































































































浙公网安备 33010602011771号