簡體   English   中英

如何從 LinkedHashMap 條目創建關系鏈?

[英]How to create a relation chain from LinkedHashMap entries?

Map<String, List<String>> parentChildMap = new LinkedHashMap<>();

具有以下內容:

{"a": ["a1", "a2", "a3"]}
{"a2": ["a21", "a22"]}
{"a22": []}

我想創建以下字符串:

  1. 一個 - > a1
  2. a -> a2 -> a21
  3. a -> a2 -> a22
  4. 一個 - > a3

我想我可以遞歸地組裝它們,但我不知道如何編寫遞歸的 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM