流编程
* 流的简介
*
* 从支持数据处理操作的源生成的元素序列。
* ---Java8实战
*
* 数据源 中间操作 终端操作
*
*
* 流是什么
*
*
* 1、JDK1.8引入的新成员,以声明式方式处理集合数据
* 2、将基础的操作链接起来,完成复杂的数据处理流水线
* 3、提供透明的并行处理
*
* 流与集合的区别
*
* 时间和空间
* 只能遍历一次
* 外部迭代和内部迭代
*
*
* 流的分类:
*
*
* 中间操作 无状态操作 filter/map/peek
* 有状态操作 dictinct sorted limit
*
* 终端操作 非短路操作 forEach collect count
* 短路操作 anyMatch findFirst findAny
*
*
*
* 流的使用
*
* 中间操作(无状态) 中间操作(有状态) 终端操作(短路) 终端操作(非短路)
* 过滤(filter) 去重(distinct) 所有匹配(allMatch) 遍历(forEach)
* 映射(map) 跳过(skip) 任意匹配(anyMatch) 归约(reduce)
* 扁平化(flatMap) 截断(limit) 不匹配(noneMatch) 最大值(max)
* 遍历(peek) 排序(sorted) 查找首个(findFirst) 聚合(collect)
* 查找任意(findAny) 最小值(min)
* 计数(count)
*
/**
* filter使用:过滤掉不符合断言判断的依据
* @param args
*/
public void a(String[] args) {
List<Sku> list = CartService.getCartSkuList();
list.stream()
.filter(a -> SkuCategoryEnum.BOOKS.equals(a.getSkuGategory()))
//.forEach(System.out::println);
.forEach(b -> System.out.println(JSON.toJSONString(b,true)));
}
/**
* map使用:将一个元素转换成另一个元素
* @param args
*/
public void b(String[] args) {
List<Sku> list = CartService.getCartSkuList();
list.stream()
.map(a -> a.getSkuName())
//.forEach(System.out::println);
.forEach(b -> System.out.println(JSON.toJSONString(b,true)));
}
/**
* flatMap将一个对象转换成流
* @param args
*/
public void faltmap(String[] args) {
List<Sku> list = CartService.getCartSkuList();
list.stream()
.flatMap(a -> Arrays.stream(a.getSkuName().split("")))
.forEach(System.out::println);
//.forEach(b -> System.out.println(JSON.toJSONString(b,true)));
}
public void peek(String[] args) {
List<Sku> list = CartService.getCartSkuList();
list.stream()
.peek(a -> System.out.println(a.getSkuName()))
// .flatMap(a -> Arrays.stream(a.getSkuName().split("")))
.forEach(System.out::println);
}
/**
* sort:对流中元素进行排序,可选择自然排序或制定排序规则
* @param args
*/
public void sorted(String[] args) {
List<Sku> list = CartService.getCartSkuList();
list.stream()
.sorted(Comparator.comparing(Sku::getTotalPrice))
.forEach(System.out::println);
}
public void distinct(String[] args) {
List<Sku> list = CartService.getCartSkuList();
list.stream()
.map(sku ->sku.getSkuGategory())
.distinct()
.forEach(System.out::println);
}
public void skip(String[] args) {
List<Sku> list = CartService.getCartSkuList();
list.stream()
.sorted(Comparator.comparing(Sku::getTotalPrice))
.skip(3)
.forEach(System.out::println);
}
public static void main(String[] args) {
List<Sku> list = CartService.getCartSkuList();
list.stream()
.sorted(Comparator.comparing(Sku::getTotalPrice))
.limit(3)
.forEach(System.out::println);
}
- 点赞
- 收藏
- 关注作者
评论(0)