不可变集合、Stream流、异常处理

不可变集合的特点? 定义完成后不可以修改,或者添加、删除

如何创建不可变集合? List、Set、Map接口中,都存在of方法可以创建不可变集合。

Stream流

在Java 8中,得益于Lambda所带来的函数式编程, 引入了一个全新的Stream流概念。

目的:用于简化集合和数组操作的API。

说说Stream流的思想和使用步骤:

先得到集合或者数组的Stream流(就是一根传送带)。流只能使用一次!

把元素放上去, 然后就用这个Stream流简化的API来方便的操作元素。

1、集合获取Stream流的方式? 集合获取Stream的方式是通过调用stream()方法实现的。

2、数组获取Stream流的方式?

名称

说明

public static <T> Stream<T> stream(T[] array)

获取当前数组的Stream流

public static<T> Stream<T> of(T... values) 

获取当前数组/可变数据的Stream流

Stream流的常用API(中间操作方法) 

名称

说明

Stream<T> filter(Predicate<? super T> predicate)

用于对流中的数据进行过滤。

Stream<T> limit​(long maxSize)

获取前几个元素

Stream<T> skip​(long n)

跳过前几个元素

Stream<T> distinct​()

去除流中重复的元素。依赖(hashCode和equals方法)

static <T> Stream<T> concat​(Stream a, Stream b)

合并a和b两个流为一个流

       Stream流的常见终结操作方法

名称

说明

void forEach​(Consumer action)

对此流的每个元素执行遍历操作

long count​()

返回此流中的元素数

Stream流的收集方法

名称

说明

R collect​(Collector collector)

开始收集Stream流,指定收集器

 Collectors工具类提供了具体的收集方式

名称

说明

public static <T> Collector toList​()

把元素收集到List集合中

public static <T> Collector toSet​()

把元素收集到Set集合中

public static  Collector toMap​(Function keyMapper , Function valueMapper)

把元素收集到Map集合中

 异常

Error: 系统级别问题、JVM退出等,代码无法控制。

Exception:java.lang包下,称为异常类,它表示程序本身可以处理的问题

RuntimeException及其子类:运行时异常,编译阶段不会报错。 (空指针异常,数组索引越界异常) 除RuntimeException之外所有的异常:编译时异常,编译期必须处理的,否则程序不能通过编译。 (日期格式化异常)。

异常处理方式1 —— throws

方法 throws Exception{ }

异常处理方式2 —— try…catch…

监视捕获异常,用在方法内部,可以将方法内部出现的异常直接捕获处理。

这种方式还可以,发生异常的方法自己独立完成异常的处理,程序可以继续往下执行。

 异常处理方式3 —— 前两者结合

方法直接将异通过throws抛出去给调用者,调用者收到异常后直接捕获处理。

在开发中按照规范来说第三种方式是最好的:底层的异常抛出去给最外层,最外层集中捕获处理。 实际应用中,只要代码能够编译通过,并且功能能完成,那么每一种异常处理方式似乎也都是可以的。

自定义异常的分类

1、自定义编译时异常        

定义一个异常类继承Exception.  重写构造器。  在出现异常的地方用throw new 自定义对象抛出, 作用:编译时异常是编译阶段就报错,提醒更加强烈,一定需要处理!!

2、自定义运行时异常

定义一个异常类继承RuntimeException. 重写构造器。 在出现异常的地方用throw new 自定义对象抛出! 作用:提醒不强烈,编译阶段不报错!!运行时才可能出现!!

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值