首页 » 排名链接 » 转换树形用我开发的工具就行了(java)(用我工具转换就行了数据)

转换树形用我开发的工具就行了(java)(用我工具转换就行了数据)

落叶飘零 2024-10-24 09:49:45 0

扫一扫用手机浏览

文章目录 [+]

因为这样的需求每个项目中是很常见的,为了避免每次都需要循环整理,我写了一个通用的工具类,直接调用方法即可整理为如上数据。
只要是树形结构的数据一般都能整理。

代码如下:

/ 转换为树形结构 Created by ly on 2023/3/28./public class TreeUtils { public static <T> List<T> generateTree(List<T> list, String id, String pid, String childs){ if(StringUtils.isBlank(id)||StringUtils.isBlank(pid)||StringUtils.isBlank(childs)){ return list; } ArrayList<T> resultList = new ArrayList<>();//最终结果集 HashMap<Object, T> objectMap = new HashMap<>();//临时数据集 if(!CollectionUtils.isEmpty(list)){ //整理数据 for (T t : list) { //首先检查实体列childs是否初始化 Object childValue = TreeUtils.reflectGetFiledValue(t, childs); if(childValue==null){ //认为集合未初始化 //初始化集合 TreeUtils.reflectSetFiledValue(t,childs,new ArrayList<>()); } //反射获取主键 Object o = TreeUtils.reflectGetMethodValue(t, id); objectMap.put(o,t); } //将结果转换为树形 if (!objectMap.isEmpty()){ for (Map.Entry<Object, T> objectTEntry : objectMap.entrySet()) { T value = objectTEntry.getValue(); //反射获取父级id Object pidKey = TreeUtils.reflectGetMethodValue(value, pid); //将集合中的顶级放进结果集中 if(!objectMap.containsKey(pidKey)){ resultList.add(value); }else{ //将子级数据归类(引用关系) T parent = objectMap.get(pidKey); //反射获取子级 Object childKey = TreeUtils.reflectGetMethodValue(parent, childs); if(childKey instanceof List){ List temp = (List) childKey; temp.add(value); } if(childKey instanceof Set){ Set temp = (Set) childKey; temp.add(value); } } } } }return resultList;}/ 指定位置字母转换为大写 create by ly on 2023/3/28 @param [name] @return / public static String strIndexUp(String name,int index){ String result = name; if(StringUtils.isNotBlank(name)){ int length = name.length(); char[] str = new char[length];//结果集 int i = 0; for (char c : name.toCharArray()) { if(i == index){ //判断是否是字母 if(Character.isLetter(c)){ str[i] = String.valueOf(c).toUpperCase().toCharArray()[0]; }else{ str[i] = c; } }else{ str[i] = c; } i++; } result = String.valueOf(str); } return result;}

简单使用:

转换树形用我开发的工具就行了(java)(用我工具转换就行了数据) 排名链接
(图片来自网络侵删)

//id指的是主键, pid是父级id,名称一定要和pojo中的属性名称一样

List<TsOnlineMenu> finalResult = TreeUtils.generateTree(list, "id", "pid", "childs");

有需要的可以联系我

您的赞和关注是对我创作的最大肯定谢谢大家

标签:

相关文章