JavaJDK1.8之stream流操作入门及常用方法
  0ZwfR6X6Muxs 2023年11月26日 14 0


话不多说直接上代码:
第一种是通过Type类型对集合进行一个分类操作这样代码比较简洁

/**string 对应list*/
	Map<String, List<exTscmx>> map =
 	list.stream().collect(Collectors.groupingBy(exTscmx::getType));
 	/**string 对应model*/
 	Map<String, t_dangan> map = 
 	list.stream().collect(Collectors.toMap(t_dangan::getProcode, t_dangan-> t_dangan));
 	/**string 对应String*/
 	Map<String, String> map = 
 	list.stream().collect(Collectors.toMap(t_dangan::getFilename, t_dangan::getProcode));

第二种就是使用分类的方法进行分组的操作具体代码如下

Map<String, List<exTscmx>> map = new HashMap<String, List<exTscmx>>();
List<exTscmx> list = (假设这里边有值)
	for (exTscmx ex : list) {
		String type = ex.getType();
		if (map.containsKey(type)) {
			map.get(keyType).add(ex);
		} else {
			List<exTscmx> ls = new ArrayList<exTscmx>();
			ls.add(ex);
			map.put(type, ls );
		}
	}

通过操作字符串的stream流操作,为了方便查阅统一都放在这里
判空去重加拼接

List<String> strings = 
 		Arrays.asList("abc", "123", "123", "123", "123", "deg", "123", "4561234", "");
 		strings.stream().
 		filter(String -> !String.isEmpty()).distinct().collect(Collectors.joining(","))

字符串截取转换成集合

/**这里按照 , 取出来List*/
	    List<String> collect = 
	    Stream.of("a,a,dfd,df,zzz,1,2,4,5".split(",")).collect(Collectors.toList());

按照List某个值取出最大值通过stream流

/**这里按照code值取出来最大值*/
		Optional<wf_code> opt=
		audits.stream().max(Comparator.comparing(wf_code::getCode));
		wf_code audit = opt.get();

接着记录 含有Bigdecimal类型的求和
取list中的某个值最大值,求和,平均值,最小值

/**
		  * 参数类型:(这块是摘抄的!)
		  * summarizingDouble 统计数据(double)状态, 其中包括count min max sum和平均值
		  * summarizingInt 统计数据(int)状态, 其中包括count min max sum和平均值
		  * summarizingLong 统计数据(long)状态, 其中包括count min max sum和平均值.
		  * summingInt 求和 返回int类型
		  * summingDouble 求和 返回double类型
		  * summingLong 求和 返回long类型
		  * counting 返回Stream的元素个数
		  * averagingDouble 求平均值 返回double类型
		  * averagingInt 求平均值 返回int类型
		  * averagingLong 求平均值 返回long类型
		  * maxBy 在指定条件下,返回最大值
		  * minBy 在指定条件下,返回最小值
		*/
		//普通类型
   		lstZbBid.stream().collect(Collectors.summingDouble(zb_bid::getWjsj)))
   		//或者这也也行
   		list.stream().mapToDouble(zb_bid->zb_bid.getWjsj().doubleValue())
   					 .reduce(0, Double::sum);
   		//BigDecimal类型
   		lstZbBid.stream().map(zb_bid->zb_bid.getWjsj())
   						 .reduce(BigDecimal.ZERO,BigDecimal::add)
		//BigDecimal 类型保留两位  Objects为你的list集合
		BigDecimal freightSum = objects.stream()
										.map(Object :: 	getMoney)
										.reduce(BigDecimal.ZERO,BigDecimal::add)
										.setScale(2,BigDecimal.ROUND_DOWN);
       //Integer类型 其他类型差不多
 		BigDecimal freightSum = objects.stream().map(Object :: getMoney)
 													.reduce(Integer::add);

Java8高效率循环

##这是Java8的循环逻辑,流式执行
objects.stream().forEach(o ->{
			//逻辑代码
		});

快速遍历Map

map.forEach((k,v) ->{
			//k是key  v是value 逻辑代码在这里写
	});


【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月26日 0

暂无评论

推荐阅读
  bVJlYTdzny4o   9天前   21   0   0 Java
0ZwfR6X6Muxs