【发布时间】:2016-07-12 13:47:55
【问题描述】:
这有点难以解释。在此示例代码中:
public class SomeClass
{
private String id;
private String parent;
public SomeClass(String id, String parent)
{
this.id = id;
this.parent = parent;
}
public String getParent()
{
return parent;
}
}
List<SomeClass> someList = new ArrayList();
someList.add(new SomeClass("Test1", "none"));
someList.add(new SomeClass("Test2", "none"));
someList.add(new SomeClass("Test1Mem1", "Test1"));
someList.add(new SomeClass("Test2Mem1", "Test2"));
someList.add(new SomeClass("Test1Mem1Obj1", "Test1Mem1"));
我想创建一个函数,该函数将使用“父”字段获取包含其层次结构中的对象的所有对象。例如,如果我查找“Test1Mem1Obj1”,它应该给我“{Test1Mem1,Test1}”的值,如果我查找“Test2Mem1”,它应该给我“{Test2}”的值。基本上是获取父级的父级的父级等等。由于语言障碍,我很抱歉这个解释。我希望有人可以在这里帮助我。谢谢!
我有一个临时的肮脏解决方案,你可以明白为什么这不好。
if(someObj.getParent() != null)
{
result.add(someObj.getParent());
if(someObj.getParent().getParent() != null)
{
result.add(someObj.getParent().getParent());
if(someObj.getParent().getParent().getParent() != null)
{
result.add(someObj.getParent().getParent().getParent());
}
}
}
【问题讨论】:
-
是否需要使用List?我认为树结构在这里可能会更好。
-
另外我应该提到我从 MySQL 数据库加载列表。所以它没有任何顺序并且在实现上受到限制,我不能使用树结构。
-
ID 是唯一的吗?你能用地图代替吗?
-
是的,id 是唯一的,在我的原始代码中,我使用的是 Map 而不是 List。我简化了这个例子,以便更好地解释。
标签: java parent-child hierarchy