[英]How to create a relation chain from LinkedHashMap entries?
Map<String, List<String>> parentChildMap = new LinkedHashMap<>();
具有以下內容:
{"a": ["a1", "a2", "a3"]}
{"a2": ["a21", "a22"]}
{"a22": []}
我想創建以下字符串:
我想我可以遞歸地組裝它們,但我不知道如何編寫遞歸的 function。(迭代也可以。)
您可以使用以下方法列出以一個字符串開頭的所有鏈:
public void listChains(String start, Consumer<List<String>> cons) {
listChains(start, new ArrayList<>(), cons);
}
private void listChains(String start, List<String> chain,
Consumer<List<String>> cons) {
int n = chain.size();
chain.add(start);
List<String> children = parentChildMap.get(start);
if (children == null || children.isEmpty()) {
cons.accept(chain);
} else {
children.forEach(child -> {
listChains(child, chain, cons);
});
}
chain.remove(n);
}
要打印從“a”開始的所有鏈,您可以這樣做:
listChains("a", (chain) -> {
System.out.println(chain.stream()
.collect(Collectors.joining(" -> ")));
});
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.