哪里有最新的网站源码,网站改版方案案例,群晖建设网站,响应式网站 产品轮播代码在产品研发时遇到这样一个问题#xff0c;对于省市区县这类三级联动的数据#xff0c;前端插件需要一次把数据全部返回#xff0c;单纯的使用接口查询字节的没办法满足要求。
如果一次把数据全部返回#xff0c;前端使用起来很麻烦需要一条一条的进行查找。
常规的使用方…在产品研发时遇到这样一个问题对于省市区县这类三级联动的数据前端插件需要一次把数据全部返回单纯的使用接口查询字节的没办法满足要求。
如果一次把数据全部返回前端使用起来很麻烦需要一条一条的进行查找。
常规的使用方法是把集合转换成一个有结构的树形结构。
树形结构是一种非线性的数据结构它由nn0个有限结点组成这些结点之间具有层次关系。每个结点可以有零个或多个子结点其中根结点是层次最高的结点没有父结点其他结点有且仅有一个父结点。在树形结构中子结点的数量被称为该节点的度树的度是树中最大的度数。树的深度或高度是指树中结点的最大层次数。 实体类
Data
public class AreaVO implements Serializable {private static final long serialVersionUID 1L;private Integer id;private Integer pid;private String areaCode;private String areaName;private Integer level;private ListAreaVO childList;}
TreeUtil import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;/*** author zhizhao* description* create 2018-11-14 9:07*/
public class TreeUtil {public static ListAreaVO toTree(ListAreaVO treeNodeList) {//数据按照pid分组MapInteger, ListAreaVO map treeNodeList.stream().collect(Collectors.groupingBy(AreaVO::getPid));//找出所有的根节点pid0的为根节点ListAreaVO areaList map.get(0);for (AreaVO areaVO : areaList) {forEach(map, areaVO);}return areaList;}private static void forEach(MapInteger, ListAreaVO collect, AreaVO areaVO) {ListAreaVO nodeList collect.get(areaVO.getId());if (collect.get(areaVO.getId()) null) {return;}areaVO.setChildList(nodeList);for (AreaVO node : nodeList) {forEach(collect, node);}}}
转换输出结果