有人能帮我如何在java中得到递归嵌套结构的所有叶子元素数据吗?
public class Item {
private String id;
private List<Item> items;
}
例如:
A
- AA
- aa1
- AB
- ab1
- abab1
- a1
后果
在结果中,我只需要得到以下元素列表[aa1,abab1,a1]
首先,感谢您的帮助。
这个怎么样:
public class TestTest {
public static class Item {
private final String id;
private final List<Item> items;
public Stream<Item> getLeaves() {
if (items == null || items.isEmpty()) {
return Stream.of(this);
}
return items.stream()
.flatMap(Item::getLeaves);
}
}
public static void main(String[] args) {
final var item = new Item(
"A",
List.of(
new Item("AA",
List.of(new Item("aa1"))
),
new Item("AB",
List.of(new Item("ab1",
List.of(new Item("abab1")))
)
),
new Item("a1")
)
);
final var leaves = item.getLeaves()
.map(Item::getId)
.collect(Collectors.toList());
System.out.println(leaves);
}
}
注意:为简洁起见,省略了构造函数和getters
尝试将此方法添加到类:
public List<Item> getLeaves() {
ArrayList<Item> list = new ArrayList<>();
if (items.size() == 0) {
list.add(this);
} else {
for (Item item : items) {
list.addAll(item.getLeaves());
}
}
return list;
}
它只是检查自己是否是一片叶子。如果是,它返回自己,如果不是,它返回它孩子的所有叶子。
你可以用递归的方式很容易地做到:
public static List<Item> findLeaves(Item rootItem){
List<Item> leaves = new ArrayList<>();
recursivelyCollectLeaves(leaves, rootItem);
return leaves;
}
private static void recursivelyCollectLeaves(List<Item> leaves, Item actualItem){
if(actualItem.getItems().isEmpty()){
//No children, the actual item is a leaf
leaves.add(actualItem);
}
else{
for(Item child : actualItem.getItems()){
recursivelyCollectLeaves(leaves, child);
}
}
}
PS:为了让这段代码正常工作,请注意我在Item类中添加了getter。
问题内容: 在带有Python的Selenium中,是否可以将WebElement的所有子级作为列表获取? 问题答案: 是的,您可以通过或实现。 但是,这听起来并不像查找某个元素的 所有子 元素的有效用例。要获得所有直接/间接孩子都是昂贵的手术。请进一步说明您要做什么。应该有更好的方法。
在Selenium和Python中,是否可以将WebElement的所有子元素作为列表?
问题内容: 如何递归选择所有子元素? 此类仅在定义的className和所有直接子级上抛出一个类。您如何以一种简单的方式选择所有子节点,如下所示: 问题答案: 使用 空格 匹配元素的所有后代: 匹配 x 内的每个元素 y ,无论它嵌套在多深处-孩子,孙子等等。 __ 星号匹配任何元素。 官方规范:CSS2.1:第5.5章:后代选择器
但是querySelectorAll(“:not([foo])”)仍然会返回未选定元素的子元素。
我一直在用这个四叉树http://www.astroml.org/book_figures/chapter2/fig_quadtree_example.html 在一些数据上。但是我现在需要结果结构的嵌套表示。 其结构类似于: 这里的子元素是递归元素,它是一个列表,包括进一步的实例。最低深度没有子级(为0),是我想要访问的表示。因此,在这种情况下,我会访问数据 最终,我希望在最低级别的数据表示像:
问题内容: 这是我想要做的事情:-我需要一个函数,当将其作为参数传递时,ID(用于事物类别)将提供所有子类别,子子类别和子子子..etc 。-我在考虑使用递归函数,因为我不知道子类别及其子类别的数量,依此类推,这是到目前为止我一直在尝试的操作 如果我使用return而不是echo,我将不会得到相同的结果。我需要一些帮助以解决此问题或从头开始重写它 问题答案: 我很难弄清楚你的职能。我认为这会做您想