Stream实操
一、filter
/**
* filter:过滤不符合断言判断的数据
*/
@Test
public void filerTest(){
list.stream()
// 筛选书籍类的商品
.filter(sku ->
SkuCategoryEnum.BOOKS
.equals(sku.getSkuCategory()))
.forEach(sku ->
System.out.println(
JSON.toJSONString(sku, true)));
}
filter函数源码
Stream<T> filter(Predicate<? super T> predicate);
Predicate<? super T> predicate
是一个断言函数式接口,里面有一个boolean test(T t);
方法,使用lamda表达式传入对应的判断逻辑,根据返回boolean类型值来过滤。上述代码的过滤逻辑是:
// 是否为书记类的商品
sku ->SkuCategoryEnum.BOOKS.equals(sku.getSkuCategory())
二、map
/**
* map 将一种类型元素转换成另外一种类型元素
*/
@Test
public void mapTest() {
list.stream()
/*
map 将sku对象转换为skuName(String类型)
得到的结果将式skuName组成的集合
*/
.map(sku -> sku.getSkuName())
.forEach(sku ->
System.out.println(
JSON.toJSONString(sku, true)));
}
三、peek
对集合进行任意操作无返回值,通常用于输出集合内容,他是并行的,如果遇到有状态的流操作会顺序执行,例如sorted,否则将会交替执行。
@Test
public void peekTest() {
list.