Stream流
Stream流
作用
结合了Lambda表达式,简化集合,数组的操作
步骤
- 先得到一条Stream流(流水线),并把数据放上去
- 使用中间方法对流水线上的数据操作
- 使用终结方法对流水线上的数据操作
获取Stream流
- 单列集合 -> Collection中的默认方法
java
1 | ArrayList<String> alist = new ArrayList<> (); |
- 双列集合 -> 无法直接使用stream流
- 第一种获取stream流
java
1 | HashMap<String, Integer> hm = new HashMap<> (); |
- 第二种获取stream流
java
1 | HashMap<String, Integer> hm = new HashMap<> (); |
- 数组 -> Arrays工具类中的静态方法
java
1 | int[] arr = {1, 2, 3, 4}; |
- 一堆零散数据 -> Stream接口中的静态方法of
注意:方法的形参是一个可变参数,可以传递一堆零散的数据,也可以传递数组,但是数组必须是引用数据类型的,如果传递基本数据类型,是会把整个数组当作一个元素,放到Stream当中
java
1 | Stream.of(1, 2, 3, 4, 5) |
Stream流的中间方法
中间方法,返回新的Stream流,返回的Stream流只能使用一次,因此使用链式编程,修改Stream流中的数据,不会影响原来的集合或者数组中的数据
- filter 过滤
java
1 | ArrayList<String> list = new ArrayList<> (); |
- limit 获取前几个元素
java
1 | ArrayList<String> list = new ArrayList<> (); |
- skip 跳过前几个元素
java
1 | ArrayList<String> list = new ArrayList<> (); |
- distinct 元素去重,依赖hashCode和equals方法
java
1 | ArrayList<String> list = new ArrayList<> (); |
- concat 合并a和b两个流为一个流
java
1 | ArrayList<String> list1 = new ArrayList<> (); |
- map 转换流中的数据类型
java
1 | ArrayList<String> list = new ArrayList<> (); |
Stream流的终结方法
- forEach 遍历
java
1 | HashMap<String, Integer> hm = new HashMap<> (); |
- count 统计长度
java
1 | HashMap<String, Integer> hm = new HashMap<> (); |
- toArray 收集流中的数据,放到数组中
java
1 | HashMap<String, Integer> hm = new HashMap<> (); |
- collect 收集流中的数据,放到集合中(List, Set, Map)
java
1 | ArrayList<String> list = new ArrayList<> (); |
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Czar!
评论
ValineDisqus