网站制作设及的技术,万界随机购物系统,微信公众号广告投放价格表,军事最新新闻播报简述
利用jdk8 lambda表达式分组函数#xff0c;可巧妙构建各种树#xff0c;比如地区树#xff0c;可以利用其多线程特性充分利用CPU提高性能。
分组函数#xff1a;Collectors.groupingBy()
开起多线程#xff1a;list.parallelStream()
实例
以地区为例#xff1…简述
利用jdk8 lambda表达式分组函数可巧妙构建各种树比如地区树可以利用其多线程特性充分利用CPU提高性能。
分组函数Collectors.groupingBy()
开起多线程list.parallelStream()
实例
以地区为例
首先定义一个Java实体存储地区数据
class District {private String code;private String name;private String parentCode;private ListDistrict children;//getter/setter...
}以下为处理构建地区树的核心逻辑
ListDistrict getDistrictTree() {// 第一步查询地区树ListDistrict districts new ArrayList();// 第二步根据parentCode进行分组需过滤根节点利用parallelStream()开起多线程处理MapString, ListDistrict map districts.parallelStream().filter(item - item.getParentCode() ! null).collect(Collectors.groupingBy(District::getParentCode));// 第三步遍历原数据集合将分组的数据设置到children此时便得到完整的树districtsdistricts.parallelStream().forEach(item - item.setChildren(map.get(item.getCode())));// 第三步将所有非根节点过滤即得到完整的树return districts.stream().filter(item - item.getParentCode() null).collect(Collectors.toList());
}