2019년 10월 30일 수요일

[java] 계층형 테이블 데이터 list 를 map 으로 변환하기


//최상위 부모는 parentId 가 0
//공통사용할수있게 제네릭으로 빼지 않았다 알아서 변경해서 사용하시길


private ArrayList<CompanyVo > makeCompanyTreeList(ArrayList<CompanyVo > companyList) {
    Map<String, CompanyVo> mapTmp = new HashMap<>();
    // 리스트를 아이디를 키로하는 맵으로 변환
    for(CompanyVo companyVo : companyList) {
        companyVo.setText(companyVo.getCompanyName());
        companyVo.setHasChildren(false);
        companyVo.setChecked(false);
        companyVo.setId(companyVo.getCompanyId());
        companyVo.setImageCssClass("fas fa-building");
        companyVo.setPrimaryKey(companyVo.getCompanyId());
        companyVo.setChildren(new ArrayList<CompanyVo>());
        mapTmp.put(String.valueOf(companyVo.getCompanyId()), companyVo);
    }
    // 계층 구조 만들기
    for(CompanyVo current : companyList) {
        String parentId = String.valueOf(current.getParentId());
        // 부모 노드가 있는 놈
        if(!parentId.equals("0")) {
            CompanyVo parent = mapTmp.get(parentId);
            // 부모가 맵상에 존재
            if(parent != null) {
                parent.setHasChildren(true);
                parent.setImageCssClass("fas fa-sitemap");
                // 기존 자식들을 가져옴.
                ArrayList<CompanyVo> children = parent.getChildren();
                children.add(current);
                parent.setChildren(children);
                mapTmp.put(parentId, parent);
                mapTmp.put(String.valueOf(current.getCompanyId()), current);
            }
        }
    }
    ArrayList<CompanyVo > companyTreeList = new ArrayList<CompanyVo > ();
    for(CompanyVo companyVo : companyList) {
        if(String.valueOf(companyVo.getParentId()).equals("0")) {
            CompanyVo root = mapTmp.get(String.valueOf(companyVo.getCompanyId()));
            companyTreeList.add(root);
        }
    }
    return companyTreeList;
}












댓글 없음:

댓글 쓰기

[lunux]리눅스 폴더별 용량 확인

리눅스 폴더별 용량 확인 조회 하고자 하는 디렉토리 리스트가있는 경로로 이동후 du -h --max-depth=1