我正在尝试按树状数据结构存储实例对象。 以我为例,我将获得以下字符串列表:
“ A / B / C”, “ A / B / D”, “ A / T / P”, “ Q / W / E”等。
“ /”代表其层次结构。例如,B的父母,C和D的父母B。
这些字母中的每个字母都代表一个Instance对象,因此根据“ /”将它们拆分后,如何在Java中按层级将这些字母作为Instances对象存储在列表中?我是否还需要在实例对象中添加父项或子项或两个字段?
实例对象:
public class Instance {
private String name;
private String description;
private int type;
}
谢谢。
答案 0 :(得分:3)
首先,您需要重新访问数据结构Instance
类。从您提供的示例来看,您似乎正在尝试创建一个Tree数据结构,其中一个节点可以具有多个子节点。您需要设计您的Instance
类,以处理一个节点中的多个子代。
尝试使用实例列表来处理子代。
您的课程看起来像-
class Instance {
private String name;
private String description;
private int type;
List<Instance> children;
}
尝试拆分输入字符串并遍历每个子字符串,检查是否已经有名称的Instance
对象。否则,您将创建一个新的Instance
对象。需要修改拆分字符串中的上一个元素,以将当前节点添加为其子节点。
例如,如果您拆分"A/B/C"
,并对其进行迭代。
对于A
,第一个元素-也是其根,请检查是否为Instance
创建了A
对象,如果没有,则创建A
。将A
存储在temp
变量中,以便以后修改A
。
对于B
,temp
持有A
的引用,检查是否为Instance
创建了B
对象,如果没有,则创建{{1} }。修改B
的{{1}}以将temp
添加到列表中,让children
保留对B
的引用
对于temp
,B
持有C
的引用,检查是否为temp
创建了B
对象,如果没有,则创建{{1} }。修改Instance
的{{1}}以将C
添加到列表中,让C
保留对temp
的引用。