Stream 的获取


① 通过集合Collection获取

List<Integer> list = new ArrayList<Integer>(Arrays.asList(1,2,3,4,5));
Stream<Integer> stream = list.stream();

② 通过数组获取

String[] array = {"are","you","ok"};
Stream<String> stream = Arrays.stream(array);
//对于基本类型数组的处理
int[] array = {1,2,3,4,5};
Stream<Integer> stream = Arrays.stream(array).boxed();    
//Arrays.stream(array)获取的是一个IntStream对象,boxed 方法用于将目前 Stream 中的基本类型装箱Stream<String> stream = Stream.of("are","you","ok");

③ 直接通过值获取

Stream<String> stream = Stream.of("are","you","ok");

Stream 常用管道操作


1) 筛选 filter

filter函数接收一个Lambda表达式作为参数,该表达式返回 boolean,在执行过程中,流将元素逐一输送给filter,并筛选出执行结果为 true 的元素;

//筛选出列表中的非空项
List<String> list = Arrays.asList("are","you","","ok");
List<String> filted = list.stream()
                      .filter(x-> !x.empty())
                      .collect(Collectors.toList());

2) 去重 distinct

//去除列表中的重复元素
List<String> list = Arrays.asList("are","you","you","ok");
List<String> distincted = list.stream()
                          .distinct()
                          .collect(Collectors.toList());

3) 截取 limit

截取流的前N个元素: