1.Stream流的作用
结合了Lambda表达式,简化集合、数组的操作。
2.Stream流的使用步骤
1.先得到一条Stream流(流水线),并把数据放上去
- 单列集合:default Stream<E> stream() Collection中的默认方法
- 双列集合:无法直接使用stream流
- 数组: public static <T> Stream<T> stream(T[] array) Arrays工具类中的静态方法
- 一堆零散数据:public static<T> Stream<T> of(T... values) stream接口中的静态方法
(of方法的形参可以传递一堆零散的数据,也可以是数组,数组的类型必须是引用数据类型,如果是基本数据类型,会被看做一个整体元素。)
2.使用中间方法对流水线上的数据进行操作
3.使用终结方法对流水线上的数据进行操作
案例1:单列集合获取一条steam流
ArrayList<String> list = new ArrayList<>();
Collections.addAll(list,"a","b","c","d","e");
//获取一条流水线
Stream<String> stream1 = list.stream();
//使用终结方法打印流水线上所有的数据
/* stream1.forEach(new Consumer<String>() {
@Override
public void accept(String s) {
System.out.println(s);
}
});*/
list.stream().forEach(s -> System.out.println(s));
案例2:双列集合获取一条steam流
//双列集合
HashMap<String,Integer> hm = new HashMap<>();
hm.put("aaa",111);
hm.put("bbb",222);
hm.put("ccc",333);
hm.put("ddd",444);
//第一种获取stream流
hm.keySet().stream().forEach(s -> System.out.println(s));
/**
* aaa
* ccc
* bbb
* ddd
*/
//第二种获取stream流
hm.entrySet().stream().forEach(s-> System.out.println(s));
/**
* aaa=111
* ccc=333
* bbb=222
* ddd=444
*/
案例3:数组获取一条steam流
//数组
int[] arr = new int[]{1,2,3,4,5,6,7,8};
//获取stream流
Arrays.stream(arr).forEach(s-> System.out.println(s));
案例4:零散数据获取一条steam流
//一堆零散数据
Stream.of(1,2,3,4,5).forEach(s-> System.out.println(s));
Stream.of("a","b","c","d","e").forEach(s-> System.out.println(s));