Java 遍历列表映射的映射
我有这样的Java 遍历列表映射的映射,java,collections,Java,Collections,我有这样的map Map<String, Map<String, List<String>>> m; Map-m; 我想反复浏览一下这个列表 我的逻辑是这样的: 首先我拿到了第一张地图的钥匙 然后拿到第二张地图的钥匙 从这个键开始,我迭代列表 for(映射m:m.keyset()){ 对于(映射m1:m.getKey(){ 列表l=m1.getKey(){ for(字符串s:l){ } } } 这是正确的吗 我对测试它感到困惑…请帮帮我…:)你几乎已经
map
Map<String, Map<String, List<String>>> m;
Map-m;
我想反复浏览一下这个列表
我的逻辑是这样的:
for(映射m:m.keyset()){
对于(映射m1:m.getKey(){
列表l=m1.getKey(){
for(字符串s:l){
}
}
}
这是正确的吗
我对测试它感到困惑…请帮帮我…:)你几乎已经拥有了它,这是你想要的
Map<String,Map<String,List<String>>> m = new HashMap<String, Map<String,List<String>>>();
for(String k : m.keySet()) {
Map<String,List<String>> m1 = m.get(k);
for(String k1 : m1.keySet()) {
List<String> l = m1.get(k1);
for (String s : l){
}
}
}
Map m=newhashmap();
对于(字符串k:m.keySet()){
Map m1=m.get(k);
对于(字符串k1:m1.keySet()){
列表l=m1.get(k1);
for(字符串s:l){
}
}
}
只需遍历值即可
Map<String,Map<String,List<String>>> m = new HashMap<String, Map<String,List<String>>>();
for(Map<String,List<String>> m2 : m.values()) {
for(List<String> l : m2.values()) {
for (String s : l){
}
}
}
Map m=newhashmap();
对于(映射m2:m.values()){
对于(列表l:m2.values()){
for(字符串s:l){
}
}
}
我对测试它感到困惑
什么?也不要忽略泛型我的逻辑正确吗???你试过了吗?这是判断它是否正确的最快最简单的方法。用容器中的容器复制容器中的容器你可能应该学会如何编写类。你的代码是一个无法维护的痛苦。为什么我们要使用字符串Kre是增强for循环中的三个部分。第三部分是正在迭代的集合。中间部分是表示迭代中当前值/对象的局部变量。第一部分是集合中对象的类型。在您的例子中,m.keySet()返回一组字符串。因此字符串将是第一部分中必须使用的类型。如果您的问题是为什么for(字符串k:m.keySet())正确而不是for(映射m:m.keySet())-ya?您需要了解增强for循环的一般结构,例如:for(第一部分第二部分:第三部分)。
Map<String,Map<String,List<String>>> m = new HashMap<String, Map<String,List<String>>>();
for(Map<String,List<String>> m2 : m.values()) {
for(List<String> l : m2.values()) {
for (String s : l){
}
}
}
Map<String, Map<String, List<String>>> m = new HashMap<>();
for (Map.Entry<String, Map<String,List<String>> entry : m.entrySet()) {
for (Map.Entry<String, List<String>> innerEntry : entry.entrySet()) {
for (String elem : innerEntry) {
...
}
}
}
m.forEach((s, entry) -> entry.forEach(
(s1, innerEntry) -> innerEntry.forEach(
elem -> { ... }
)
));