首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在java中按"/“拆分,并以树的形式分层存储?

如何在java中按"/“拆分,并以树的形式分层存储?
EN

Stack Overflow用户
提问于 2019-02-01 02:51:41
回答 1查看 245关注 0票数 1

我正在尝试存储分层的实例对象,就像树数据结构一样。在我的例子中,我将获得如下字符串列表:

"A/B/C“、"A/B/D”、"A/T/P“、"Q/W/E”等

"/“表示它们的层次结构。例如B的双亲,C和D的B双亲。

每个字母代表一个实例对象,所以在根据"/“拆分后,我如何在java中按层次将这些字母作为实例对象存储在列表中?我是否还需要在Instance对象中添加父字段或子字段或同时添加这两个字段。

Instace对象:

代码语言:javascript
复制
public class Instance { 

  private String name;

  private String description;

  private int type;
}

谢谢。

EN

回答 1

Stack Overflow用户

发布于 2019-02-01 03:25:57

首先,您需要重新访问数据结构,即Instance类。从您提供的示例中,您似乎正在尝试创建一个Tree数据结构,其中一个节点可以有多个子节点。您需要设计可以在一个节点中处理多个子节点的Instance类。尝试使用实例列表来处理子实例。

你的班级看起来就像-

代码语言:javascript
复制
class Instance {
  private String name;
  private String description;
  private int type;
  List<Instance> children;
}

尝试拆分输入字符串并遍历每个子字符串,检查是否已经有同名的Instance对象。如果没有,您将创建一个新的Instance对象。需要修改拆分字符串中的前一个元素,以添加当前节点作为其子节点。

例如,如果拆分"A/B/C",然后对其进行迭代。

对于A,第一个元素-因此它是根,检查是否为A创建了Instance对象,如果不是,则创建A。将A存储在temp变量中,以便稍后修改A

对于Btemp保存A的引用,检查是否为B创建了Instance对象,如果不是,则创建B。修改tempchildren,将B添加到列表中,让temp保留B的引用

对于Ctemp保存B的引用,检查是否为C创建了Instance对象,如果不是,则创建C。修改tempchildren,将C添加到列表中,让temp保留C的引用。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54467381

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档