Java构建树形结构

关键代码:

	// 构建目录DTO树
	public static List<Directory> buildDirectoryTree() {
		List<Directory> resultList = new ArrayList<>();
		
		// 备注:模拟从dao层获取所有数据
		List<Directory> directoryList = new ArrayList<>();
		directoryList.add(new Directory("1", "", "一级目录"));
		directoryList.add(new Directory("1.1", "1", "一级目录的子目录A"));
		directoryList.add(new Directory("1.2", "1", "一级目录的子目录B"));
		directoryList.add(new Directory("2", "", "二级目录"));
		directoryList.add(new Directory("2.1", "2", "一级目录的子目录A"));

		for (Directory obj : directoryList) {
			// 判定父节点
			if (obj.getParentId() == null || "".equals(obj.getParentId())) {
				resultList.add(recursiveFindChildren(obj, directoryList));
			}

		}

		return resultList;
	}

	// 递归查找子节点
	public static Directory recursiveFindChildren(Directory targetObj, List<Directory> dtoList) {
		for (Directory dto : dtoList) {
			if(targetObj.getId().equals(dto.getParentId())) {
				if(targetObj.getChildrenList() == null) {
					targetObj.setChildrenList(new ArrayList<Directory>());
				}
				// 递归调用
				targetObj.getChildrenList().add(recursiveFindChildren(dto,dtoList));
			}
		}
		return targetObj;
	}

Java类

@Data
@NoArgsConstructor
@AllArgsConstructor
public class Directory {

	private String id;

	private String parentId;

	private String name;

	private List<Directory> childrenList;

	public DirectoryInfoVO(String id, String parentId, String name) {
		this.id = id;
		this.parentId = parentId;
		this.name = name;
	}

}

你可能感兴趣的:(JAVA,java,开发语言)