1

Hashmap<String, ArrayList<String>>それらのように見えるa をどのように反復できますか?

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

結果は、この 4 つの配列のようになります。

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

for(...)2 つのループを何度も試しましたが、うまくいきません。

よろしく:D

4

2 に答える 2

0

私は@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;
}
于 2013-11-06T02:06:39.010 に答える