实体类
@Data
public class LeaveType
{
/** 主键 */
private Integer typeId;
/** 父级ID */
private Integer parentId;
/** 类型名称 */
private String typeName;
/**
* 是否存在下级
*/
private boolean insertStatus;
/**
* 存放二级类数据
*/
private List<LeaveType> children;
}
List集合数据转树状结构
/**
* 使用递归方法建树
*
* @param LeaveTypes
* @return
*/
public static List<LeaveType> trees(List<LeaveType> list) {
List<LeaveType> trees = new ArrayList<LeaveType>();
for (LeaveType leaveType : list) {//0代表顶级架构
if (0 == (leaveType.getParentId())) {
trees.add(findChildren(leaveType, list));
}
}
return trees;
}
/**
* 递归查找子节点
*
* @param LeaveTypes
* @return
*/
public static LeaveType findChildren(LeaveType LeaveType, List<LeaveType> list) {
for (LeaveType type : list) {
if (LeaveType.getTypeId() == (type.getParentId())) {
type.setInsertStatus(false);
LeaveType.setInsertStatus(true);
if (StringUtils.isEmpty(LeaveType.getChildren())) {
LeaveType.setChildren(new ArrayList<LeaveType>());
}
LeaveType.getChildren().add(findChildren(type, list));
}
}
return LeaveType;
}