java - 如何按 "/"拆分并在 java 中像树一样分层存储?

标签 java tree

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

"A/B/C", "A/B/D", "应付账款/付款", “Q/W/E”等

“/”代表它们的层级。例如 A 是 B 的 parent ,B 是 C 和 D 的 parent 。

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

实例对象:

public class Instance { 

  private String name;

  private String description;

  private int type;
}

谢谢。

最佳答案

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

你的类(class)看起来像-

class Instance {
  private String name;
  private String description;
  private int type;
  List<Instance> children;
}

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

例如,如果您拆分 “A/B/C”,并对其进行迭代。

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

对于Btemp持有A的引用,检查是否为创建了Instance对象>B,如果没有则创建B。修改 tempchildren 以将 B 添加到列表中,让 temp 持有 B< 的引用

对于Ctemp持有B的引用,检查是否为创建了Instance对象>C,如果没有则创建C。修改 tempchildren 以将 C 添加到列表中,让 temp 持有 C< 的引用

关于java - 如何按 "/"拆分并在 java 中像树一样分层存储?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54467381/

相关文章:

java - 如何指定 android.os.Message 的目的地?

java - 如何将新的依赖项插入 Gradle 项目?

algorithm - 给定一组区间 S。你必须以最小时间复杂度找到 S 中包含在给定区间 (a, b) 中的所有区间

javascript - ExtJS -- 将 JSON 数据加载到树面板中

serialization - 面试题——序列化和反序列化n叉树

python - pyroot Ntuple 处理程序

java - 如何适当限制对外部系统的Web请求?

java - 与 "nbsp"相关的 Xpath 错误

java - Eclipse 无法读取 src 文件夹中的文本文件

python - 在树中查找在所有级别中出现最频繁的节点