Java资深小白,不足之处,或者有任何错误欢迎指出。 --蓝紫

目录

获取List中某一字段的集合逗号分隔指定字段List转为mapfilter条件过滤后count统计对List进行sorted排序、limit限制求和方法BigDecimal求和数值类型求和String转BigDecimal求和

比较两个List重复部分使用GroupingBy分组

获取List中某一字段的集合

获取deps中单位主键[id]集合

List depIds = deps.stream().map(OrgDep::getId).collect(Collectors.toList());

//去重获取单位编号

List depCodes = deps.stream().distinct().map(OrgDep::getCode).collect(Collectors.toList());

逗号分隔指定字段

获取所有单位名字,中文逗号分割

//方式一

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 = Arrays.asList(str.split(","));

List list = Arrays.asList(StringUtils.split(str, ","));

//将list转化为逗号分割的字符串

String str = String.join(",", list);

String str = StringUtils.json(list.toArray(), ",");  

List转为map

将deps集合转为map,key为主键[id], value为单位[OrgDep]本身。

Map depMap = deps.stream().collect(Collectors.toMap(OrgDep::getId, e -> e));

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 expensiveDep = deps.stream().sorted(Comparator.comparing(OrgDep::getAssetPrice))

.limit(1).collect(Collectors.toList());

//获取资产价格最低的单位

List cheapDep = deps.stream().sorted(Comparator.comparing(OrgDep::getAssetPrice).reversed())

.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 parentCodes = Arrays.asList(StringUtils.split(codes, ","));

// depCodes对比父级编号重合部分编号(即depCodes中含有parentCodes的集合)

List repeatDepCodes = depCodes.stream().filter(parentCodes::contains)

.collect(Collectors.toList());

使用GroupingBy分组

根据父级编号[parentCode]分组,可用于获取同一父级编号下的所有单位

Map> parentChildMap = deps.stream().collect(

Collectors.groupingBy(e -> e.getParentCode()));

参考阅读

评论可见,请评论后查看内容,谢谢!!!
 您阅读本篇文章共花了: