Java-Stream流详解
- 如何学会JDK8中的Stream流,用它来提高开发效率?
- 创建不可变的集合(Immutable 不可变的)
- 场景
- 方法
- 初试 Stream 流
- Stream 流的思想
- Stream 流的作用
- Stream 流的使用步骤
- Stream 流的中间方法
- Stream 流的终结方法
如何学会JDK8中的Stream流,用它来提高开发效率?
Go!
创建不可变的集合(Immutable 不可变的)
场景
1、数据不能被修改
2、被不信用的方法调用
方法
在List、Set、Map接口中都存在静态的of方法,可以获取一个不变的集合。
注:这个集合不能被添加、修改、删除元素。
List<String> list = List.of("张三", "李四");
// 对该对象进行 add、remove、set操作会报错
Set<String> set = Set.of("张三", "李四");
// 一旦创建,只能进行查询操作
Map<String, String> map = Map.of("key", "value");
// 键不能重复;底层源码of没有可变参数,最多10个键值对;超过10个,需要使用ofEntries/copyOf
初试 Stream 流
// 将集合中名字以“张”开头,并且长度为3的名字打印出来
list.stream().filter(name -> name.startWith("张")).filter(name -> name.length == 3)
.forEach(name -> System.out.println(name));
Stream 流的思想
类似工厂流水线模式的流程处理。
Stream 流的作用
结合Lambda表达式,简化对数组、集合的操作。
Stream 流的使用步骤
先得到一条Stream流(流水线),并把数据放上去,然后使用各种API进行操作。
过滤、转换 中间方法
统计、打印 终结方法(最后一步)
双列集合需要使用 keySet 或者 entrySet 方法,再使用 Stream 方法。
Stream.of() 方法,必须是引用数据类型,如果是基本类型,不会自动装箱,会把整个数组作为整体放入流中。
Stream 流的中间方法
注意:
1、中间方法会生成新的流。
2、caocat 要注意两个流中的对象类型保持一致,否则会自动选取大的作为共同父类。
// map() 方法的使用;第一个参数是传入数据类型,第二个参数为返回类型
list.stream().map(new Function<String, Integer>(){
@Override
public Integer apply(String s){
return result;
}
}).forEach(s -> System.out.println(s));
=====================================================
list.stream().map(s -> Integer.parseInt(s)).forEach(s -> System.out.println(s));
注意:第二个参数为泛型,泛型里面不能写基本数据类型。