我如何迭代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
答案 0 :(得分:1)
如果这是您编写的内容,那么我想建议一个备用数据结构。而不是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不是您编写的内容,并且您仍然需要帮助来确定如何迭代它,请向我们展示您尝试过的内容。
答案 1 :(得分: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;
}