当前位置: 首页 > news >正文

桂林生活网站百度云app

桂林生活网站,百度云app,自己搭建网站的步骤,it外包企业排名你知道的越多,你不知道的越多 点赞再看,养成习惯 如果您有疑问或者见解,欢迎指教: 企鹅:869192208 文章目录 前言代码实现定义测试实体类实现方法 前言 最近遇到一个地区数据需要转换成树的需求,研究了一种…

你知道的越多,你不知道的越多
点赞再看,养成习惯
如果您有疑问或者见解,欢迎指教:
企鹅:869192208

文章目录

        • 前言
        • 代码实现
          • 定义测试实体类
          • 实现方法

前言

最近遇到一个地区数据需要转换成树的需求,研究了一种新方法,不使用传统递归的方式,而是使用 stream 流的方式构建树。

代码实现
定义测试实体类
import lombok.Data;
import java.util.List;/*** <h2> </h2>** @author xymy* @date 2023/12/21 17:17*/
@Data
public class TsModel {private String id;private String name;private String pid;private List<TsModel> childs;
}
实现方法
public static void main(String[] args) {String str = "[\n" +"    {\"id\":\"1\",\"name\":\"张三\",\"pid\":\"\"},\n" +"    {\"id\":\"2\",\"name\":\"张三2\",\"pid\":\"\"},\n" +"    {\"id\":\"3\",\"name\":\"张三3\",\"pid\":\"\"},\n" +"    {\"id\":\"4\",\"name\":\"张三4\",\"pid\":\"\"},\n" +"    {\"id\":\"33\",\"name\":\"张三33\",\"pid\":\"3\"},\n" +"    {\"id\":\"330\",\"name\":\"张三330\",\"pid\":\"3\"},\n" +"    {\"id\":\"3301\",\"name\":\"张三330\",\"pid\":\"330\"},\n" +"    {\"id\":\"41\",\"name\":\"张三41\",\"pid\":\"4\"}\n" +"]";List<TsModel> tsModels = JSONArray.parseArray(str, TsModel.class);Map<String, List<TsModel>> pModels = tsModels.stream().collect(Collectors.groupingBy(ts -> StringUtils.isBlank(ts.getPid()) ? "" : ts.getPid()));List<TsModel> childTs = new ArrayList<>();for (TsModel tsModel : tsModels) {String id = tsModel.getId();List<TsModel> childModel = pModels.get(id);if (CollectionUtils.isNotEmpty(childModel)) {tsModel.setChilds(childModel);childTs.addAll(childModel);}}Set<String> childSeqs = childTs.stream().map(t -> t.getId()).collect(Collectors.toSet());List<TsModel> newTree = tsModels.stream().filter(tsm -> !childSeqs.contains(tsm.getId())).collect(Collectors.toList());System.out.println(JSON.toJSONString(newTree));}

打印结果:

[{"id": "1","name": "张三","pid": ""},{"id": "2","name": "张三2","pid": ""},{"childs": [{"id": "33","name": "张三33","pid": "3"},{"childs": [{"id": "3301","name": "张三330","pid": "330"}],"id": "330","name": "张三330","pid": "3"}],"id": "3","name": "张三3","pid": ""},{"childs": [{"id": "41","name": "张三41","pid": "4"}],"id": "4","name": "张三4","pid": ""}
]

至此,就实现了列表转成树的逻辑。

http://www.shuangfujiaoyu.com/news/54631.html

相关文章:

  • 网站建设画册网站seo综合查询
  • 数字营销技术应用中级实训答案seo关键词优化哪个平台好
  • 做seo必须有自己网站吗搜索引擎营销有哪些
  • 广州知名网站推广seo网络搜索引擎优化
  • 合肥网站设计培训培训学校网站
  • 动态网站很难做吗智能营销系统开发
  • 如何用电脑记事本做网站友链购买网
  • 免费个人网站建站源码免费加精准客源
  • 网站注册界面代码关键词在线听免费
  • 有做二手厨房设备的网站吗会员制营销方案
  • 怎样免费做网站推广网站推广途径和推广要点
  • 做网站 附加信息绍兴seo网站推广
  • 专业网站的建设网站的优化和推广方案
  • 中小企业公共服务平台网站建设百度手机助手官方正版
  • 网站安全监测如何去推广
  • 广州网站建设找新际app推广赚佣金
  • 一个网站里有两个网页怎么做宁波seo推广哪家好
  • 网站建设编辑关键词调价工具哪个好
  • 保健品网站建设背景长春网站建设开发
  • 美女做短视频网站如何创建自己的网址
  • 网络架构模式广州百度提升优化
  • 天台县建设规划局网站世界杯竞猜
  • 烟台网站制作设计代写企业软文
  • 网站建设网站建品牌推广与传播怎么写
  • 伊春住房和城乡建设局网站网站设计方案模板
  • 智能建站设计正能量网站地址链接免费
  • 扁平化设计 科技感网站素材岳阳seo公司
  • 如何做网站的外部链接国际重大新闻
  • 网站seo应用企业网站设计规范
  • 电脑记事本做网站北京网站优化方法