簡體   English   中英

遍歷Hashmap <String, ArrayList<String> &gt;

[英]Iterate over Hashmap<String, ArrayList<String>>

我如何遍歷像這樣的Hashmap<String, ArrayList<String>>

Name:Sam,Peter,Andrea,Sandra
Age:20,17,24,40
City:London,London,Munich,London

結果應該看起來像這四個數組。

Sam,20,London 
Peter,17,London 
Andrea,24,Munich 
Sandra,40,London

我已經嘗試過兩次for(...)循環,但是沒有用。

最好的問候:D

如果這是您編寫的內容,那么我想建議一個備用的數據結構。 代替Hashmap<String, ArrayList<String>> ,使用ArrayList<HashMap<String, String>>

這樣你有

{Name:Sam,    Age:20, City:London},
{Name:Peter,  Age:17, City:London},
{Name:Andrea, Age:24, City:Munich},
{Name:Sandra, Age:40, City:London}

如果列表的HashMap不是您編寫的,而您仍然需要幫助以弄清楚如何進行迭代,請向我們展示您的嘗試。

盡管我絕對同意@GreyBeardedGeek的回答,但是您可能應該更改數據結構。 但是,我確實查看了將Map<String, List<String>>更改為List<Map<String, String>>

public static <S, T> List<Map<S, T>> unravel(Map<S, List<T>> org) {
    List<Map<S, T>> out = new LinkedList<>();

    for (Entry<S, List<T>> entry : org.entrySet()) {
        if (entry.getValue() == null || entry.getValue().isEmpty()) {
            continue;
        }
        while (out.size() < entry.getValue().size()) {
            out.add(new HashMap<S, T>());
        }
        for (int i = 0, size = entry.getValue().size(); i < size; i++) {
            T value = entry.getValue().get(i);

            if (value == null) {
                continue;
            }

            out.get(i).put(entry.getKey(), value);
        }
    }

    return out;
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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