Integer[] a = new Integer[]{2,342,13,21,4,14,23431}; List<Integer> collect = Stream.of(a).filter(d -> d > 5).collect(Collectors.toList());
2.2 map 和 flatMap
map方法其主要是转换Stream的类型,同样传入一个参数函数,需要传递一个转换的函数即可
1 2 3
// 这里从Integer的Stream 转换成了String类型 Integer[] a = new Integer[]{2,342,13,21,4,14,23431}; Stream<String> objectStream = Stream.of(a).map(i -> String.valueOf(i));
flatMap方法主要是将多个Stream的合并操作
1 2 3 4 5 6 7
Integer[] a = new Integer[]{2,342,13,21,4,14,23431}; Integer[] b = new Integer[]{3,4,5,6,7,7}; List<Integer[]> arr = new ArrayList<>(); arr.add(a); arr.add(b); // 多个Stream转为一个 List<Integer> collect = arr.stream().flatMap(i -> Arrays.stream(i)).collect(Collectors.toList());
2.3 limit方法和skip方法
这两个比较好理解
limit方法就是截取前n个元素的流,若长度不够则返回原始流
1 2 3
Integer[] a = new Integer[]{2,342,13,21,4,14,23431}; List<Integer> collect = Stream.of(a).limit(20).collect(Collectors.toList()); collect.forEach(System.out::println);
skip方法和limit相反,就是丢弃前n个元素
1 2 3
Integer[] a = new Integer[]{2,342,13,21,4,14,23431}; List<Integer> collect = Stream.of(a).limit(4).collect(Collectors.toList()); collect.forEach(System.out::println);
Integer[] a = new Integer[]{2,2,342,13,21,4,14,23431}; List<Integer> collect = Stream.of(a).distinct().collect(Collectors.toList()); collect.forEach(System.out::println);
sorted也比较好理解,就是对流进行排序,和Collections.sort()有点类似
1 2 3
Integer[] a = new Integer[]{2,2,342,13,21,4,14,23431}; List<Integer> collect = Stream.of(a).sorted().collect(Collectors.toList()); collect.forEach(System.out::println);
Integer[] a = new Integer[]{2,2,342,13,21,4,14,23431}; Integer min = Stream.of(a).min(Integer::compareTo).get(); Integer max = Stream.of(a).max(Integer::compareTo).get(); long count = Stream.of(a).count();
3.2 findFirst 和 findAny
获取第一个元素,我们可以用过fiter来获取第一个满足条件的元素
1 2 3
Integer[] a = new Integer[]{2,2,342,13,21,4,14,23431}; Integer integer = Stream.of(a).filter(i -> i > 3).findFirst().get(); System.out.println(integer);