我正在尝试存储分层的实例对象,就像树数据结构一样。在我的例子中,我将获得如下字符串列表:
"A/B/C“、"A/B/D”、"A/T/P“、"Q/W/E”等
"/“表示它们的层次结构。例如B的双亲,C和D的B双亲。
每个字母代表一个实例对象,所以在根据"/“拆分后,我如何在java中按层次将这些字母作为实例对象存储在列表中?我是否还需要在Instance对象中添加父字段或子字段或同时添加这两个字段。
Instace对象:
public class Instance {
private String name;
private String description;
private int type;
}谢谢。
发布于 2019-02-01 03:25:57
首先,您需要重新访问数据结构,即Instance类。从您提供的示例中,您似乎正在尝试创建一个Tree数据结构,其中一个节点可以有多个子节点。您需要设计可以在一个节点中处理多个子节点的Instance类。尝试使用实例列表来处理子实例。
你的班级看起来就像-
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。
对于B,temp保存A的引用,检查是否为B创建了Instance对象,如果不是,则创建B。修改temp的children,将B添加到列表中,让temp保留B的引用
对于C,temp保存B的引用,检查是否为C创建了Instance对象,如果不是,则创建C。修改temp的children,将C添加到列表中,让temp保留C的引用。
https://stackoverflow.com/questions/54467381
复制相似问题