# tree-helper **Repository Path**: xu_zhibin/tree-helper ## Basic Information - **Project Name**: tree-helper - **Description**: 树形助手,这是一个树形结构数据构建工具库,可以使用TreeHelper快速构建树形数据 - **Primary Language**: Java - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 0 - **Created**: 2022-05-15 - **Last Updated**: 2023-02-03 ## Categories & Tags **Categories**: Uncategorized **Tags**: tree ## README # tree-helper #### 介绍 树形助手,这是一个树形结构数据构建工具库,可以使用TreeHelper快速构建树形数据 #### 使用说明 ~~~java public class TreeSample { private static List MOCK_TREE_DATA = null; static { MOCK_TREE_DATA = new ArrayList<>(); MOCK_TREE_DATA.add(new TreeModel(1L, "node1", 0L, 1, 1)); MOCK_TREE_DATA.add(new TreeModel(11L, "node11", 1L, 2,1)); MOCK_TREE_DATA.add(new TreeModel(12L, "node12", 1L, 2,2)); MOCK_TREE_DATA.add(new TreeModel(111L, "node111", 11L, 3,1)); MOCK_TREE_DATA.add(new TreeModel(112L, "node112", 11L, 3,2)); MOCK_TREE_DATA.add(new TreeModel(121L, "node121", 12L, 3,2)); MOCK_TREE_DATA.add(new TreeModel(122L, "node122", 12L, 3,1)); MOCK_TREE_DATA.add(new TreeModel(2L, "node2", 0L, 1,2)); MOCK_TREE_DATA.add(new TreeModel(3L, "node3", 0L, 1,3)); MOCK_TREE_DATA.add(new TreeModel(3001L, "node3001", -1L, 2)); MOCK_TREE_DATA.add(new TreeModel(3002L, "node3002", -2L, 2)); } /** * 注解方式 * @return */ public static List testCreateTree01() { return TreeHelper.createTree(MOCK_TREE_DATA, true, true); } /** * 字段名方式 * @return */ public static List testCreateTree02() { return TreeHelper.createTree(MOCK_TREE_DATA, "id", "parentId", "children",true, "order", true); } /** * 注解方式,且自定义第一级数据判定逻辑 * @return */ public static List testCreateTree03() { return TreeHelper.createTree(MOCK_TREE_DATA, true, true, new FirstLevelNodeConsumer() { @Override public boolean isFirstLevelNode(List nodes, T childNode) { Object level = null; try { level = ReflectUtil.getFieldValue(TreeNodeLevel.class, childNode); } catch (IllegalAccessException | IllegalArgumentException e) { throw new TreeNodeCannotSetValueException(e.getMessage(), e); } catch (NoSuchFieldException e) { throw new NoSuchTreeNodeException(e.getMessage(), e); } return level!=null && (int) level == 1; } }); } /** * 注解方式,且自定义第一级判定逻辑,且将未找到父节点的节点归类到自定义节点下 * @return */ public static List testCreateTree04() { return TreeHelper.createTree(MOCK_TREE_DATA, true, true,new FirstLevelNodeConsumer() { @Override public boolean isFirstLevelNode(List nodes, T childNode) { Object fieldValue = null; try { fieldValue = ReflectUtil.getFieldValue(TreeNodeLevel.class, childNode); } catch (IllegalAccessException | IllegalArgumentException e) { throw new TreeNodeCannotSetValueException(e.getMessage(), e); } catch (NoSuchFieldException e) { throw new NoSuchTreeNodeException(e.getMessage(), e); } return fieldValue != null && Integer.parseInt(String.valueOf(fieldValue)) == 1; } }, new TreeModel(300L, "mnode", 1L, 1, 4)); } public static void main(String[] args) { System.out.println(JSON.toJSONString(testCreateTree01())); System.out.println(JSON.toJSONString(testCreateTree02())); System.out.println(JSON.toJSONString(testCreateTree03())); System.out.println(JSON.toJSONString(testCreateTree04())); } } ~~~