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 自定义运行时异常






posted @ 2024-04-19 13:57  子沐呐吖  阅读(25)  评论(0)    收藏  举报