ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

java返回树状图节点数据

2021-12-30 12:03:26  阅读:134  来源: 互联网

标签:java childrens 树状 10001 sortCode List parentCid 节点 sortName


前端需要实现设计如图:

 

后端设计返回的数据类型如下(数据量太大,省略部分数据):

1 {"code":0,"msg":null,"data":[{"sortName":"未知","sortCode":"-","parentCid":"","childrens":[]},
{"sortName":"食品\r\n部","sortCode":"1","parentCid":"","childrens":
[{"sortName":"烟酒饮料","sortCode":"100","parentCid":"1","childrens":
[{"sortName":"软性饮料","sortCode":"1000","parentCid":"100","childrens":
[{"sortName":"碳酸饮料","sortCode":"10000","parentCid":"1000","childrens":
[{"sortName":"可乐","sortCode":"100000","parentCid":"10000","childrens":[]},
{"sortName":"加味汽水","sortCode":"100001","parentCid":"10000","childrens":[]},
{"sortName":"其它汽水","sortCode":"100002","parentCid":"10000","childrens":[]}]},
{"sortName":"蔬果汁","sortCode":"10001","parentCid":"1000","childrens":
[{"sortName":"蔬菜汁","sortCode":"100010","parentCid":"10001","childrens":[]},
{"sortName":"橙汁","sortCode":"100011","parentCid":"10001","childrens":[]},
{"sortName":"苹果汁","sortCode":"100012","parentCid":"10001","childrens":[]},
{"sortName":"浓缩果汁","sortCode":"100013","parentCid":"10001","childrens":[]},
{"sortName":"其它果汁","sortCode":"100014","parentCid":"10001","childrens":[]},
{"sortName":"桃汁","sortCode":"100015","parentCid":"10001","childrens":[]},
{"sortName":"葡萄汁","sortCode":"100016","parentCid":"10001","childrens":[]},
{"sortName":"混合果汁","sortCode":"100017","parentCid":"10001","childrens":[]}]},
{"sortName":"机能性饮料","sortCode":"10002","parentCid":"1000","childrens":
[{"sortName":"咖啡饮料","sortCode":"100020","parentCid":"10002","childrens":
[]},{"sortName":"功能饮料","sortCode":"100021","parentCid":"10002","childrens":
[]}]},{"sortName":"茶饮料","sortCode":"10003","parentCid":"1000","childrens":
[{"sortName":"奶茶","sortCode":"100030","parentCid":"10003","childrens":
[]},{"sortName":"加味茶","sortCode":"100031","parentCid":"10003","childrens":
[]},{"sortName":"功能茶","sortCode":"100032","parentCid":"10003","childrens":
[]}]},{"sortName":"水","sortCode":"10004","parentCid":"1000","childrens":
[{"sortName":"纯水","sortCode":"100040","parentCid":"10004","childrens":
[]},{"sortName":"矿泉水","sortCode":"100041","parentCid":"10004","childrens":
[]},{"sortName":"含碳酸水","sortCode":"100042","parentCid":"10004","childrens":
[]},{"sortName":"其它类水","sortCode":"100043","parentCid":"10004","childrens":[]}]}

 

 这边后端数据类别是共有5个节点,设计实体如下:

public class SortNode {

  /**
   * 类被名称
   */
  private String sortName;

  /**
   * 类别代码
   */
  private String sortCode;

  /**
   * 父节点
   */
  private String parentCid;

  /**
   * 所有子节点
   */
  private List<SortNode> childrens;
}

 

利用递归,实现返回树状数据逻辑代码如下:

 public List<SortNode> querySortNode(String storeCode) throws Exception {

  //从数据库获取配置字段并排序 String sortValue = applicationOptionService.getOptionValue( storeCode, ApplicationOptionService.RUMBA_PREFS_MODULE_NO, LocalPrefParam.BASIC_INFORMATION_GOODS_SORT); List<String> sortLength = Arrays.asList(verifySorts(sortValue, storeCode)); Collections.sort(sortLength);

  //查询出所有的数据,给父节点赋值 List<SortNode> sortNodes = new ArrayList<>(); List<Sort> sorts = sortDao.getSorts(); sorts.forEach(sort -> { SortNode sortNode = new SortNode(sort.getName(), sort.getCode()); String code = sortNode.getSortCode(); int reduce; int nextSortLength = getLastSortLength(sortLength, code.length()); if (nextSortLength == 0) { reduce = 1; } else { reduce = code.length() - nextSortLength; } String parentCid = code.substring(0, code.length() - reduce); sortNode.setParentCid(parentCid); sortNodes.add(sortNode); });

  // 给子节点塞值 List<SortNode> collect = sortNodes.stream() .filter(o -> o.getParentCid().equals("")) .peek(o -> o.setChildrens(getChildSortNode(o, sortNodes))) .collect(Collectors.toList()); return collect; } /** * 递归赋值子节点 */ private List<SortNode> getChildSortNode(SortNode sortNode, List<SortNode> sortNodes) { List<SortNode> collect = sortNodes.stream().filter(o -> o.getParentCid().equals(sortNode.getSortCode())) .peek(o -> o.setChildrens(getChildSortNode(o, sortNodes))) .collect(Collectors.toList()); return collect; }

 

标签:java,childrens,树状,10001,sortCode,List,parentCid,节点,sortName
来源: https://www.cnblogs.com/alanturingson/p/15748205.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有