流编程

举报
zwy 发表于 2020/07/26 17:59:15 2020/07/26
【摘要】 * 流的简介 * * 从支持数据处理操作的源生成的元素序列。 * ---Java8实战 * * 数据源 中间操作 终端操作 * * * 流是什么 * * * 1、JDK1.8引入的新成员,以声明式方式处理...

 * 流的简介

 * 

 * 从支持数据处理操作的源生成的元素序列。

 *                          ---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);
	}
	
	
	


【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。