我正在尝试像树数据结构一样分层存储实例对象。 就我而言,我将获得如下字符串列表:
"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
。
对于B
,temp
持有A
的引用,检查是否为创建了
,如果没有则创建Instance
对象>BB
。修改 temp
的 children
以将 B
添加到列表中,让 temp
持有 B< 的引用
对于C
,temp
持有B
的引用,检查是否为创建了
,如果没有则创建Instance
对象>CC
。修改 temp
的 children
以将 C
添加到列表中,让 temp
持有 C< 的引用
。
关于java - 如何按 "/"拆分并在 java 中像树一样分层存储?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54467381/