- * 题目:
- * 1. 构建属性结构List<DemoNode> data,根据本包的data.png中数据结构图将数据存入data中(字就是nodeName)
- * 2. 将树形结构List<DemoNode>里面的元素全部遍历出来存放到List<String> list中,输出结果转换成字符串:粉粉碎机被粉碎机粉碎了怎么办
- * 3. 将list里元素去重后存放到List<String> result,输出结果转换成字符串:粉碎机被了怎么办
复制代码
主类:- /** * 稽核点:List数据存储,回调函数,集合转字符串,元素去重 *
- * 题目:
- * 1. 构建属性结构List<DemoNode> data,根据本包的data.png中数据结构图将数据存入data中(字就是nodeName)
- * 2. 将树形结构List<DemoNode>里面的元素全部遍历出来存放到List<String> list中,输出结果转换成字符串:粉粉碎机被粉碎机粉碎了怎么办
- * 3. 将list里元素去重后存放到List<String> result,输出结果转换成字符串:粉碎机被了怎么办 */public class Main01 { public static void main(String[] args) { // 树型数据存放 List data = new ArrayList(); // 构建元素 DemoNode demoNode = generateNodeTree(); data.add(demoNode); // 遍历数据存放 List eleList = new ArrayList(); getAllEle(eleList, data); System.out.println(String.join("", eleList)); // 粉粉碎机被粉碎机粉碎了怎么办 // 去重后元素存放 // method1: 使用set无法保证能按List次序排序 Set set = new HashSet(eleList); List result1 = new ArrayList(set); System.out.println(String.join("", result1)); // 了么粉被碎怎机办 // method2: 使用List.contains方法判断重存放 List result2 = new ArrayList(); for (String one : eleList) { if (!result2.contains(one)) { result2.add(one); } } System.out.println(String.join("", result2)); // 粉碎机被了怎么办 } /** * 遍历树形结构(按层级从小到大) * * @param eleList 存放节点名称元素集合 * @param nodeList 要遍历的元素集合 */ static void getAllEle(List eleList, List nodeList) { List childList = new ArrayList(); for (DemoNode one : nodeList) { eleList.add(one.getNodeName()); if (one.getChild() != null && one.getChild().size() > 0) { childList.addAll(one.getChild()); } } // 下一级有子节点,开始下一级遍历 if (childList != null && childList.size() > 0) { getAllEle(eleList, childList); } } /** * 构建图片属性结构 * * @return */ private static DemoNode generateNodeTree() { /** 构造第三层元素并归属 **/ DemoNode node31 = new DemoNode("被"); List node31Childs = addChildNodeList(new DemoNode("了"), new DemoNode("怎")); node31.setChild(node31Childs); DemoNode node33 = new DemoNode("碎"); List node33Childs = addChildNodeList(new DemoNode("么"), new DemoNode("办")); node33.setChild(node33Childs); /** 构造第二层元素并归属 **/ DemoNode node21 = new DemoNode("粉"); List node21Childs = addChildNodeList(node31, new DemoNode("粉")); node21.setChild(node21Childs); DemoNode node22 = new DemoNode("碎"); List node22Childs = addChildNodeList(node33, new DemoNode("机")); node22.setChild(node22Childs); DemoNode node23 = new DemoNode("机"); List node23Childs = addChildNodeList(new DemoNode("粉"), new DemoNode("碎")); node23.setChild(node23Childs); /** 构造第一层元素并归属 **/ DemoNode nodeRoot = new DemoNode("粉"); List nodeRootChilds = addChildNodeList(node21, node22, node23); nodeRoot.setChild(nodeRootChilds); return nodeRoot; } /** * 组装子节点 * * @param childNodes * @return */ private static List addChildNodeList(DemoNode... childNodes) { List list = new ArrayList(); for (DemoNode one : childNodes) { list.add(one); } return list; }}
复制代码
节点类:- /**
- * 节点数据
- */
- public class DemoNode {
- private String NodeName; //节点名称
- private List<DemoNode> child; //子节点
- public String getNodeName() {
- return NodeName;
- }
- public void setNodeName(String nodeName) {
- NodeName = nodeName;
- }
- public List<DemoNode> getChild() {
- return child;
- }
- public void setChild(List<DemoNode> child) {
- this.child = child;
- }
- public DemoNode(String nodeName) {
- NodeName = nodeName;
- }
- public DemoNode() {
- }
- }
复制代码
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。 |