조립 트 리 구조 데이터 기능 패키지

2372 단어 1JavaEE
  • 선언:
  • 지난 블 로 그 는 실체 TreeNode 에 대해 트 리 구 조 를 조립 하 는 데 만 침 을 놓 았 기 때문에 실제 개발 에서 우 리 는 데이터 시트 에 대응 하 는 많은 실 체 를 만들어 데 이 터 를 적재 할 것 이다. 반대로 모든 실 체 는 재 귀적 이거 나 순환 하 는 방법 으로 데이터 구 조 를 조립 해 야 하지 않 을 까?다음 에 저 는 지난 블 로그 의 방법 을 한 번 더 포장 하고 도구 류 로 포장 하여 모든 실체 에 대응 해 야 합 니 다. 그러나 이런 실체 에는 HashSet 유형의 children 구성원 변 수 를 포함 하고 get set 방법 을 생 성 해 야 합 니 다.String 형식의 id, parentId 구성원 변 수 를 포함 하고 get set 방법 을 생 성 해 야 합 니 다.
  •  /**
         *         
         * @param
         * @return
         */
        public static  List buildTree(List list) throws InvocationTargetException, IllegalAccessException, NoSuchMethodException, IntrospectionException {
            List trees = new ArrayList<>();
            for (T treeNode : list) {
                Method method = treeNode.getClass().getDeclaredMethod("getParentId", null);
                Object value = method.invoke(treeNode, null);
                if ("0".equals(String.valueOf(value))) {
                    trees.add(findChildren(treeNode,list));
                }
            }
            return trees;
        }
    
     public static  T findChildren(T t,List treeNodes) throws NoSuchMethodException, InvocationTargetException, IllegalAccessException, IntrospectionException {
            Method getIdMethod = t.getClass().getDeclaredMethod("getId");
            String id = String.valueOf(getIdMethod.invoke(t, null));
            for (T it : treeNodes) {
                Method getParentIdMethod = it.getClass().getDeclaredMethod("getParentId");
                Object parentId = getParentIdMethod.invoke(it, null);
                if (id.equals(String.valueOf(parentId))) {
                    Method getChildrenMethod = t.getClass().getDeclaredMethod("getChildren");
                    Object children = getChildrenMethod.invoke(t, null);
                    if (null == children ) {
                        Method setChildrenMethod = t.getClass().getDeclaredMethod("setChildren",HashSet.class);
                        setChildrenMethod.invoke(t, new HashSet());
                    }
                    ((HashSet)getChildrenMethod.invoke(t, null)).add(findChildren(it, treeNodes));
                }
    
            }
            return t;
        }
    

    소결: 이상 은 봉 인 된 도구 류 입 니 다. 본 블 로 그 는 필기 만 배우 고 사용 할 뿐 입 니 다. 여러분 은 더 좋 은 아이디어 가 있 으 면 교 류 를 환영 합 니 다. 스프 레이 를 멀리 하 세 요!

    좋은 웹페이지 즐겨찾기