我有一个包含一些数据的数组,需要创建一个对象图。我不知道如何通过数组进行迭代并创建/链接对象。 这是考试:
Array
a1 b1 c1
a1 b1 c2
a1 b2 c3
最后我应该有一个id为a1的对象A,其中包含两个对象B(id为b1和b2)的列表,其中包含3个对象C(b1包含c1和c2的列表,b2包含c3)< / p>
example for the classes:
class A{
string id;
List<B> bs;
}
class B{
Sting id;
List<C> cs;
}
class C{
String id;
}
答案 0 :(得分:0)
创建一些POJO类或元组来保存值。
根据分隔符(空格)
拆分字符串循环遍历字符串标记数组并将值插入对象,并根据名称在它们之间创建关系。
如果只有3个元素,你可以对其进行硬编码并且它很容易。如果有一个变量号,那么你需要更聪明并拥有一个或一组POJO /节点,这样你就可以根据名称检索一个。
这里有一些伪代码来帮助
String[] tokens = str.split(' ');
Set<node> nodes = new HashMap<String, node>();
while(has more tokens in tokens){
String s = tokens.next();
if(nodes.get(s) == null){
Node n = new node();
nodes.add(s, n);
}
else{
Node n = nodes.get(s);
}
n.name = s;
String s2 = tokens.next();
Node n2 = nodes.get( s2 ); // retrieve node based on name
if(n2 == null){
Node n2 = new node();
n2.name = s2;
nodes.add(s2, n2);
}
n.left = n2;
// do same thing for the other child
您可以使用数组或集合,或者您希望这样做。
E:不要创建3个类。那很糟糕。没有理由3个对象不应该具有相同的类。您需要一个通用的通用节点类,它可以填充它们的所有目的,因此它很好地用于导航节点树。从彼此中获取不同的类类型A,B,C是不好的,并且会使代码中的对象非常痛苦。
你想要的是一个单一的节点&#34; class,然后是3个不同的实例。
节点a,节点b,节点c;
通过这种方式,他们可以一直相互联系。
Class Node
Node left;
Node right;
Public Node(){}
这就是它的全部内容。如果愿意,可以使用get / set方法封装左侧和右侧节点。
(如果出于某种疯狂的原因你有一个告诉你使用A,B和C类的作业,请忽略这一点)