- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
解释起来有点困难。在此示例代码中:
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());
}
}
}
最佳答案
如果您可以让 getParent()
返回 SomeClass
而不是 String
,那就非常简单了:
public boolean isDescendantOf(String parentName) { // part of SomeClass
SomeClass parent = this.parent;
while (!parent.id.equals("none")) { // or null check
if (parent.id.equals(parentName)) {
return true; // found a parent named parentName
}
}
return false; // eventually reached a parentless parent and never found one matching parentName
}
不过,也许这是不可能的。如果您可以将内容放入 map 中,如下所示:
Map<String, SomeClass> map = new HashMap<>(); // map from parent name to SomeClass
map.put("Test1", new SomeClass("Test1", "none"));
map.put("Test2", new SomeClass("Test2", "none"));
map.put("Test1Mem1", new SomeClass("Test1Mem1", "Test1"));
map.put("Test2Mem1", new SomeClass("Test2Mem1", "Test2"));
map.put("Test1Mem1Obj1", new SomeClass("Test1Mem1Obj1", "Test1Mem1"));
然后你可以像这样使用递归来循环它:
public boolean isDescendentOf(SomeClass child, String parentName) {
SomeClass parent = map.get(child.parent);
if (parent == null) {
throw new RuntimeException("Warning: parent doesn't exist!");
}
if (parent.id.equals(parentName)) {
return true;
} else {
return isDescendentOf(parent, parentName);
}
}
如果您想填充给定元素的所有父元素的列表,请调用如下函数:
public static void PopulateParents(List<String> parents, Map<String, ClassTest> nodes, ClassTest child) {
if (child.parent.equals("none")) {
return;
}
ClassTest parent = nodes.get(child.parent);
if (parent == null) {
throw new RuntimeException("No parent exists called " + child.parent);
}
parents.add(parent.id);
PopulateParents(parents, nodes, parent);
}
关于java - 如何根据父子关系获取项目中嵌套(层次结构)的所有项目的列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38330773/
我正在尝试将多个水平链接的 Button 和 TextView 垂直链接为 View 集,但仍保持平面 View 层次结构。这是我的初始布局和代码:
到目前为止,我已经在Google BigQuery上训练了几种模型,目前我需要查看模型的外观(即架构,损失函数等)。 有没有办法获取这些信息? 最佳答案 仔细阅读文档后,我可以说该功能尚不存在。我什至
本文实例讲述了PHP实现二叉树深度优先遍历(前序、中序、后序)和广度优先遍历(层次)。分享给大家供大家参考,具体如下: 前言: 深度优先遍历:对每一个可能的分支路径深入到不能再深入为止,而且每个
我是一名优秀的程序员,十分优秀!