steam流
在java8中,得益于lambda所带来的的函数式编程,用于简化集合和数组操作的API
如创建一个集合,并存储多个字符串,并将‘张’开头的存储到新集合
List <String> list = new ArrayList<>();
Collections.addAll(list,'张三丰,'张三'');
List<String> zhang = new ArrayList<>();
list.stream().filter(data->data.startWith('张')).forEach(s->System.out.print(s))//支持链式编程
- 1Collection单例集合获取流
Collection<String> list = new ArrayList<>();
Stream <String> s = list.stream();
- 2Map 多例集合获取流
Map <String,Integer> maps = new HashMap<>();
//键流
Stream <String> s = maps.keySet().stream();
//值流
Stream <String> s = maps.value().stream();
//键值对流
Stream <Map.Entry<String,Integer>> s = maps.entrySet().stream();
- 3 数组获取流
String[] arr = {'撒','ad','大大'};
Stream <String> s =Array.stream(arr);
-
4 加工方法
list.stream().map(s->"添加"+s); 原数据 ->添加元素后数据 -
5 合并流
不同类型的流需要用他们的父类object去接
Stream<String> s = Stream.concat(s1,s2);
收集stream
就是把stream流操作后的结果数据转回到集合或数组中去.
stream流:方便操作集合/数组的手段
集合/数组才是开发中的目的
List <String> s = s1.collect(Collectors.toList ());
流只能使用一次
异常
是程序编译或执行的过程中可能出现的问题,如数组越界异常,空指针异常....
异常一旦出现如果没有提前处理,程序就会退出jvm虚拟机而终止
![](https://img.haomeiwen.com/i24559446/5608df12b42f1021.png)
-
常见的运行时异常
数组索引越界异常 ArrayIndexOutBoundsException
空指针异常 NullPointerException
数学操作异常 ArithmeticException
类型转换异常 ClassCastException
数字转换类型 NumberFormatException
异常是一种多线程机制 -
编译时异常
担心程序员技术不行,在编译阶段就爆出一个错误,目的在于提醒不要出错
不是RuntimeException或其子类的异常,编译阶段就报错,必须处理,否则代码不通过
可以使用throws抛出异常 -
异常的默认处理流程
1 默认会在出现异常的代码那里自动的创建一个异常对象:ArithmeticException
2 异常会从方法中出现的点这里抛出给调用者,调用者最终抛出给jvm虚拟机
3 虚拟机收到异常对象后,先在控制台直接输出异常
4 直接从当前执行的异常点干掉当前程序
5 后续代码直接死亡
编译时异常的处理形式 3种
- 1 出现异常直接抛出去给调用者,调用者继续抛出去 throws
- 2 出现异常自己捕获处理,不麻烦别人
- 3 前两者结合,出现异常直接抛出去给调用者,调用者捕获处理
1 throws:用在方法上,可以将方法内部出现的异常抛出去给本方法的调用者处理。(并不好,最终抛给虚拟机会死亡)
方法 throws Exception{}
2 try catch
监视捕获异常,用在方法内部,可以将方法内部出现的异常直接捕获处理
(发生异常的方法自己独立完成处理的异常,程序可以继续往下执行)
try{
}catch(Exception e){
e.printStackTrace();
}
3 前1和2结合(最好的)底层抛出最外层,最外层集中捕获处理
方法直接将异常通过throws抛出去给调用者
调用者收到异常后直接捕获处理(try catch )
运行时异常的处理机制
建议放在最外层调用集中捕获处理
自定义异常
- 1.自定义编译时异常
定义一个异常类继承exception
重写构造器
在出现异常的地方用throw new自定义对象抛出
throws是用在方法声明上,抛出方法内部异常
throw 方法内部之间创建异常对象并从此处抛出
- 2 自定义运行时异常
定义一个异常类继承RuntimeException
重写构造器
在出现异常的地方用 throw new自定义对象抛出
网友评论