首页 > 其他分享 >DEMO_01:List数据存储,回调函数,集合转字符串,元素去重

DEMO_01:List数据存储,回调函数,集合转字符串,元素去重

时间:2024-06-20 11:21:20浏览次数:16  
标签:01 DemoNode 粉碎机 DEMO List eleList new String

 * 题目:
 * 1. 构建属性结构List<DemoNode> data,根据本包的data.png中数据结构图将数据存入data中(字就是nodeName)
 * 2. 将树形结构List<DemoNode>里面的元素全部遍历出来存放到List<String> list中,输出结果转换成字符串:粉粉碎机被粉碎机粉碎了怎么办
 * 3. 将list里元素去重后存放到List<String> result,输出结果转换成字符串:粉碎机被了怎么办

 

主类:

/**
 * 考核点:List数据存储,回调函数,集合转字符串,元素去重
 * <p>
 * 题目:
 * 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<DemoNode> data = new ArrayList<>();
        // 构建元素
        DemoNode demoNode = generateNodeTree();
        data.add(demoNode);

        // 遍历数据存放
        List<String> eleList = new ArrayList<>();
        getAllEle(eleList, data);

        System.out.println(String.join("", eleList));     // 粉粉碎机被粉碎机粉碎了怎么办

        // 去重后元素存放
        // method1: 使用set无法保证能按List顺序排序
        Set<String> set = new HashSet<>(eleList);
        List<String> result1 = new ArrayList<>(set);
        System.out.println(String.join("", result1)); // 了么粉被碎怎机办

        // method2: 使用List.contains方法判断重存放
        List<String> 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<String> eleList, List<DemoNode> nodeList) {
        List<DemoNode> 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<DemoNode> node31Childs = addChildNodeList(new DemoNode("了"), new DemoNode("怎"));
        node31.setChild(node31Childs);

        DemoNode node33 = new DemoNode("碎");
        List<DemoNode> node33Childs = addChildNodeList(new DemoNode("么"), new DemoNode("办"));
        node33.setChild(node33Childs);

        /** 构造第二层元素并归属 **/
        DemoNode node21 = new DemoNode("粉");
        List<DemoNode> node21Childs = addChildNodeList(node31, new DemoNode("粉"));
        node21.setChild(node21Childs);

        DemoNode node22 = new DemoNode("碎");
        List<DemoNode> node22Childs = addChildNodeList(node33, new DemoNode("机"));
        node22.setChild(node22Childs);

        DemoNode node23 = new DemoNode("机");
        List<DemoNode> node23Childs = addChildNodeList(new DemoNode("粉"), new DemoNode("碎"));
        node23.setChild(node23Childs);

        /** 构造第一层元素并归属 **/
        DemoNode nodeRoot = new DemoNode("粉");
        List<DemoNode> nodeRootChilds = addChildNodeList(node21, node22, node23);
        nodeRoot.setChild(nodeRootChilds);

        return nodeRoot;
    }

    /**
     * 组装子节点
     *
     * @param childNodes
     * @return
     */
    private static List<DemoNode> addChildNodeList(DemoNode... childNodes) {
        List<DemoNode> 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() {
    }
}

 

标签:01,DemoNode,粉碎机,DEMO,List,eleList,new,String
From: https://www.cnblogs.com/cola-zhou/p/18258311

相关文章

  • 【单片机毕业设计选题24017】-基于STM32的禽舍环境监测控制系统(蓝牙版)
    系统功能:系统分为主机端和从机端,主机端主动向从机端发送信息和命令,从机端收到主机端的信息后回复温湿度氨气浓度和光照强度等信息。主要功能模块原理图:电源时钟烧录接口:单片机和按键输入电路:主机部分电路:从机部分电路:资料获取地址主从机部分代码:初......
  • 01个人课堂练习
    //policy123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828......
  • 个人课堂练习01
    个人课堂练习013月15日今天进行了web端的政策查询的实现,借鉴了一些学长的一些代码,//policy*{    padding: 0;    margin: 0;    font-family: 'OpenSansLight';    letter-spacing:.05em;    margin: 0 auto;    text-align:center;......
  • 个人课堂练习01
    今天建民让我们在课堂上实现安卓端的连接数据库,然后实现增删改,我在课堂上三个小时只实现了mysql本地数据库的连接,然后在回到宿舍后,弄到了晚上22点,我实现了增删改以下是我的代码:pckagecom.example.newone;importandroidx.appcompat.app.AppCompatActivity;importandroi......
  • P6261 [ICPC2019 WF] Traffic Blights 题解
    思路考虑题目要求的是什么。假设\(p_i\)代表通过前\(i\)个红绿灯的概率。那么我们的答案即为\(p_i-p_{i-1}\)。不妨设\(w_i=r_i+g_i\)。我们的限制条件类似:\[t\not\equiva_i\pmodw_i\]那么所有红绿灯会形成周期\(lcm(w_1,w_2,\cdots,w_n)\)。由于\(2019!\)肯......
  • ensp通过云连接VMware中Windows Server 2012 中搭建的DHCP服务器实现不同VLAN自动获取
    实验描述通过在ensp中搭建拓扑图实现在VLAN10获取192.168.1.0网段地址,VLAN10获取192.168.1.0网段地址,VLAN20获取192.168.2.0网段地址,VLAN30获取192.168.1.0网段地址,VLAN40获取192.168.4.0网段地址.WindowsServer2012搭建DHCP服务器开启VMware配置网卡信息选择为自定......
  • 小雅alist搭建教程
    先去服务器拉取小雅镜像可以利用github中的来拉取 拉取到本地后执行bash-c"$(curlhttp://docker.xiaoya.pro/update_new.sh)"然后本地就会出现小雅的docker容器获取阿里云token、opentoken、转存目录folderidtoken获取:获取网址: https://alist.nn.ci/zh/guide/drive......
  • springboot小型超市商品展销系统-计算机毕业设计源码01635
    摘 要科技进步的飞速发展引起人们日常生活的巨大变化,电子信息技术的飞速发展使得电子信息技术的各个领域的应用水平得到普及和应用。信息时代的到来已成为不可阻挡的时尚潮流,人类发展的历史正进入一个新时代。在现实运用中,应用软件的工作规则和开发步骤,采用Springboot框架建......
  • 人月神话阅读笔记01
    人月神话阅读笔记01本书以“焦油坑”一章开篇,这一得名于自然界的产物,远古时代困住了无数的洪荒巨兽。而作为人类历史以来,甚至未来都会是最复杂的一项工作——大型软件开发,自诞生以来似乎也被"焦油坑"所困扰,顺利走出来的寥寥无几,绝大多数都在其中苦苦挣扎,表面上看起来没有任何一个......
  • 《梦断代码》阅读笔记01
    读《梦断代码》有一定时间了,读了将近一半的内容对这本本书也有了初步的了解,开始选择读书的时候看到这本书的名字然我想起了一部经典的电影叫做《魂断蓝桥》于是我便毫不犹豫的选择了这本书,看之前我先看了一下书评网上的评价都还不错,也知道了这本书主要讲的是Chandler漫长而痛苦的......