java list转树形结构的工具类
时间: 2023-10-24 16:18:52 浏览: 91
以下是一个可以将Java List转换为树形结构的工具类:
```
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class ListToTreeUtil {
/**
* 将List转换为树形结构
* @param list 原始数据列表
* @param idFieldName 数据项中表示ID的字段名称
* @param parentIdFieldName 数据项中表示父ID的字段名称
* @param childrenFieldName 数据项中表示子数据项的字段名称
* @return 树形结构数据列表
*/
public static List<Map<String, Object>> listToTree(List<Map<String, Object>> list,
String idFieldName,
String parentIdFieldName,
String childrenFieldName) {
List<Map<String, Object>> treeList = new ArrayList<>();
Map<Object, Map<String, Object>> idMap = new HashMap<>();
// 将所有数据项存入idMap中
for (Map<String, Object> item : list) {
Object id = item.get(idFieldName);
idMap.put(id, item);
}
// 遍历所有数据项,将其添加到其父节点下
for (Map<String, Object> item : list) {
Object parentId = item.get(parentIdFieldName);
if (parentId == null) {
// 没有父节点,将其添加到根节点下
treeList.add(item);
} else {
// 有父节点,将其添加到父节点下
Map<String, Object> parentItem = idMap.get(parentId);
List<Map<String, Object>> children = (List<Map<String, Object>>) parentItem.get(childrenFieldName);
if (children == null) {
children = new ArrayList<>();
parentItem.put(childrenFieldName, children);
}
children.add(item);
}
}
return treeList;
}
}
```
使用方法:
```
List<Map<String, Object>> list = new ArrayList<>();
// 添加数据项到list中
List<Map<String, Object>> treeList = ListToTreeUtil.listToTree(list, "id", "parentId", "children");
// treeList即为转换后的树形结构数据列表
```
阅读全文