目录
1、筛选与切片
方法 | 描述 |
filter | 接收 Lambda , 从流中排除某些元素。 |
limit | 截断流,使其元素不超过给定数量。 |
skip | 跳过元素,返回一个扔掉了前 n 个元素的流。若流中元素不足 n 个,则返回一个空流。与 limit(n) 互补 |
distinct | 筛选,通过流所生成元素的 hashCode() 和 equals() 去除重复元素 |
例子:
//filter:过滤
menu.stream().filter(Dish::isVegetarian).collect(toList());
//limit:截断
menu.stream().limit(3).collect(toList());
//skip:跳过
menu.stream().skip(2).collect(toList());
//distinct:去掉重复(取决于hashCode() 和 equals()的算法)
List<Integer> numbers = Arrays.asList(1, 2, 1, 3, 3, 2, 4);
numbers.stream()
.filter(i -> i % 2 == 0)
.distinct()
.forEach(System.out::println);
//结果:
2
4
2、映射
方法 | 描述 |
map | 接收 Lambda , 将元素转换成其他形式或提取信息。接收一个函数作为参数,该函数会被应用到每个元素上,并将其映射成一个新的元素。 |
flatMap | 流的扁平化;接收一个函数作为参数,将流中的每个值都换成另一个流,然后把所有流连接成一个流 |
例子: