这个不是很理解,他要是有几个的 Type 都是 1,那不是要创建多个map吗?

这个不是很理解,他要是有几个的 Type 都是 1,那不是要创建多个map吗?

如果是多个map 那么 type 等于 2 的时候,是寻找哪一个 map的children节点????

List<Map> list = new ArrayList<>();
Map map = null;
for (Node node : nodes) {
    if (node.getNodeType() == 1) {
        map = new LinkedHashMap();
        map.put("node",node);
        map.put("children",new ArrayList<>());
        list.add(map);
    } else if (node.getNodeType() == 2) {
        List children = (List) map.get("children");
        children.add(node);

    }
}


正在回答 回答被采纳积分+1

登陆购买课程后可参与讨论,去登陆

1回答
好帮手慕小蓝 2022-09-22 16:46:21

同学你好,确实会生成多个Map集合。

由于数据是连续的,每当遇到type为1时,说明遇到了一个新的父节点,之后所有的type为2的子节点都应当隶属于之前的父节点。

所以每次当遇到type为1时,就可以创建一个新的Map集合,用于存储该父节点与其所有子节点,并且将这个Map集合存储在List集合中。

祝学习愉快~

  • 提问者 weixin_慕少5379513 #1

    由于数据是连续的。这个原因理解了

    但是

    哪里看得出数据是连续???数据库设计???

    2022-09-22 17:05:02
  • 同学你好,这是在数据存储时必须保证的先决条件,与数据库如何设计是没有关系的。

    强制要求数据必须是连续的,如果不连续就会出现父节点与子节点无法对应的问题。

    实际开发时会有额外的字段来控制父节点与子节点的关系,所以不会出现这样的问题。课程中为了简化开发流程,所以省略了这样的处理。

    祝学习愉快~

    2022-09-22 17:10:34
  • 明白,谢谢了

    2022-09-22 17:25:56
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师