java list扁平对象数据 转 树结构

List<DevUnit> list数据结构
姓名 班级 年级  
s1 2 1  
s2 3 1  
s3 3 1  

 

 

 

 


UnitTreeVO
public class UnitTreeVO {

    /**
     * 单元默认名称
     */
    @ApiModelProperty(value = "单元名称", dataType = "String")
    private String unitName;

    private List<UnitTreeVO> child = new ArrayList<>();


}

  

 

@Override
    public List<UnitTreeVO> unitTree() {
        List<DevUnit> list = devUnitDao.lambdaQuery().select(DevUnit::getSiteName, DevUnit::getServerName, DevUnit::getUnitName).list();

        List<UnitTreeVO> treeData = new ArrayList<>();
        String siteName = "";
        for (DevUnit devUnit : list) {
            if (!siteName.equals(devUnit.getSiteName())) {
                siteName = devUnit.getSiteName();
                UnitTreeVO unitVO = new UnitTreeVO();
                unitVO.setUnitName(siteName);
                recursion(unitVO, list);
                treeData.add(unitVO);
            }

        }

        return treeData;
    }

    private void recursion (UnitTreeVO unitParent, List<DevUnit> list){
        String serverName = "";
        for (DevUnit devUnit : list) {
            if (unitParent.getUnitName().equals(devUnit.getSiteName()) && !serverName.equals(devUnit.getServerName())) {
                serverName = devUnit.getServerName();
                UnitTreeVO unitVO2 = new UnitTreeVO();
                unitVO2.setUnitName(serverName);
                recursion(unitVO2, list);
                unitParent.getChild().add(unitVO2);
            }

            String unitName = "";
            if (unitParent.getUnitName().equals(devUnit.getServerName()) && !unitName.equals(devUnit.getUnitName())) {
                unitName = devUnit.getUnitName();
                UnitTreeVO unitVO2 = new UnitTreeVO();
                unitVO2.setUnitName(unitName);
                recursion(unitVO2, list);
                unitParent.getChild().add(unitVO2);
            }

        }
    }

  

posted @ 2024-07-31 11:29  一木人生  阅读(6)  评论(0)    收藏  举报