Java资深小白,不足之处,或者有任何错误欢迎指出。 --蓝紫
目录
获取List中某一字段的集合逗号分隔指定字段List转为mapfilter条件过滤后count统计对List进行sorted排序、limit限制求和方法BigDecimal求和数值类型求和String转BigDecimal求和
比较两个List重复部分使用GroupingBy分组
获取List中某一字段的集合
获取deps中单位主键[id]集合
List
//去重获取单位编号
List
逗号分隔指定字段
获取所有单位名字,中文逗号分割
//方式一
String names = deps.stream().map(OrgDep::getName).collect(Collectors.joining(","));
//方式二
String depNames = String.join(",", deps.stream().map(OrgDep::getName).collect(Collectors.toList()));
//特别说明 list 和 String 使用逗号互转
//将逗号分隔的字符串转换为List
List
List
//将list转化为逗号分割的字符串
String str = String.join(",", list);
String str = StringUtils.json(list.toArray(), ",");
List转为map
将deps集合转为map,key为主键[id], value为单位[OrgDep]本身。
Map
filter条件过滤后count统计
获取deps集合中状态为1的所有数量和
//BusinessStateEnum.AUDITING.getCode() 值为常量"1"
long executingNum = deps.stream().filter(e -> e.getState()
.equals(BusinessStateEnum.AUDITING.getCode())).count();
对List进行sorted排序、limit限制
//获取资产价格最高的单位
List
.limit(1).collect(Collectors.toList());
//获取资产价格最低的单位
List
.limit(1).collect(Collectors.toList());
求和方法
BigDecimal求和
获取deps集合中所有资产价格[assetsPrice]的累加值
BigDecimal total = deps.stream().map(OrgDep::getAssetPrice).reduce(BigDecimal.ZERO, BigDecimal::add);
数值类型求和
获取deps集合中所有资产价格[assetsPrice]的累加值
//int integer
int sumNum = deps.stream().mapToInt(OrgDep::getNum).sum();
//double
double sumArea = deps.stream().mapToDouble(OrgDep::getArea).sum();
//long Long
long sumId = deps.stream().mapToLong(OrgDep::getId).sum();
String转BigDecimal求和
//方式一
BigDecimal reduce = deps.stream().map(OrgDep::getCode).map(BigDecimal::new)
.reduce(BigDecimal.ZERO, BigDecimal::add);
//方式二
BigDecimal reduce1 = deps.stream().map(e->new BigDecimal(e.getCode()))
.reduce(BigDecimal.ZERO, BigDecimal::add);
比较两个List重复部分
//获取单位中所有的父级编号
String codes = deps.stream().map(OrgDep::getParentCode).collect(Collectors.joining(","));
//根据逗号拆分编号
List
// depCodes对比父级编号重合部分编号(即depCodes中含有parentCodes的集合)
List
.collect(Collectors.toList());
使用GroupingBy分组
根据父级编号[parentCode]分组,可用于获取同一父级编号下的所有单位
Map
Collectors.groupingBy(e -> e.getParentCode()));
参考阅读
发表评论