我正在尋找一種合適的遞歸方式來實現以下功能: 元素A可以具有列表L1,其中包含其他元素,例如A等。 B,C和D.這些元素(B,C和D)也可以具有列表L2,L3,L4。 所以我也需要通過這些列表。 背景是我想從名稱末尾包含「LB」的所有元素的所有列表中獲取所有對象(由getName()檢索)。列表中的所有對象都具有相同的類型。 我如何做到這一點?因爲我不知道會有多少元素和列表,我認爲遞歸解決方案是唯一適合的元素和列表?通過列表元素遞歸,列表元素也可以有列表
0
A
回答
1
基本上你有一個樹形結構,這意味着你可能需要某種形式的樹遍歷。假設我們有這樣的樹狀結構:
class Node<T>{
T value;
List<Node<T>> children = new ArrayList<>();
}
現在,如果你想要一個回調ç適用於每一個節點,你會做這樣的事情:
public <T> void visit(Node<T> rootNode, Consumer c){
c.consume(rootNode.value);
rootNode.children.forEach(n -> visit(n, c));
}
這就是所謂的深度優先遍歷。
0
您可以使用flatmap: https://docs.oracle.com/javase/8/docs/api/java/util/stream/Stream.html#flatMap-java.util.function.Function-
其中 「平坦」 列表/陣列。
如:
l1.stream().flatMap(Collection::stream).map(e-> e.getName()).filter(e -> e.contains("LB")).collect(Collectors.joining());
+0
這適用於一個嵌套水平,但不是任意深度 –
相關問題
- 1. 遞歸列表中的元素計數
- 2. 遞歸分割列表元素
- 3. 跳過列表元素的列表
- 4. 列表元素
- 5. 如何通過遞歸添加鏈接列表中的元素?
- 6. Haskell通過遞歸將元素添加到列表中
- 7. 從鏈接列表中刪除元素(通過遞歸)
- 8. 包含列表元素的列表的列表中的元素列表
- 9. 跳過列表元素 - Python
- 10. 按元素列表列出的元素列表python
- 11. 以選項元素列表
- 12. 通過檢查同一列表中的元素來更改列表元素
- 13. Haskell - 通過列表列表遞歸?
- 14. 如何通過列表元素
- 15. xsd2code元素獲得通過列表
- 16. 迭代通過列表的子元素
- 17. 迭代通過列表元素 - jQuery的
- 18. 通過名稱引用列表元素
- 19. 列表元素hightlight?
- 20. HTML列表元素
- 21. 取列表元素
- 22. Java元素列表
- 23. 我想通過遞歸得到每個列表元素的排列
- 24. XML所有元素列表
- 25. 遞歸比較遞歸列表中的元素
- 26. 是否可以修改列表元素?
- 27. 遞歸檢查列表的第一個元素以查看列表是否包含給定元素
- 28. 搜索元元素列表
- 29. 鏈接列表,通過返回新列表刪除元素
- 30. 通過函數傳遞列表中的所有元素
你的列表將被存儲爲類的屬性或者他們會在根目錄? –