流编程
* 流的简介
*
* 从支持数据处理操作的源生成的元素序列。
* ---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)