實體類
@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;
}