Java映射字符串<;列表字符串>;循环

Java映射字符串<;列表字符串>;循环,java,loops,map,Java,Loops,Map,我正在尝试使用以下代码循环地图: Map<String, List<String>> newMap = new HashMap<String, List<String>>(); List<String> newList = new ArrayList<String>(); 有人知道如何循环或搜索位置或正确列表吗?因为您将同一列表分配给地图中的所有值,所以不需要循环遍历条目集。您只需获取值并执行replaceAll操作,如C

我正在尝试使用以下代码循环地图:

Map<String, List<String>> newMap = new HashMap<String, List<String>>();
List<String> newList = new ArrayList<String>();

有人知道如何循环或搜索位置或正确列表吗?

因为您将同一列表分配给地图中的所有值,所以不需要循环遍历条目集。您只需获取值并执行replaceAll操作,如
Collections.replaceAll(list,value1,value2)

List List=pmMap.get(value1);
如果(列表!=null){
集合.replaceAll(列表、值1、值2);
}
样品

import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

public class Test {     
    public static void main(String[] args) {
        Map<String, List<String>> pmMap = new HashMap<String, List<String>>();
        List<String> newList = new ArrayList<String>(){{ add("15"); add("16"); add("17"); add("18");}};

        for (int m = 0; m < newList.size(); m++) {
            String newName = newList.get(m);
            pmMap.put(newName , newList);
        }

        System.out.println(pmMap);

        String value1 = "15";
        String value2 = "19";

        List<String> list = pmMap.get(value1);
        if(list != null){
            Collections.replaceAll(list, value1, value2);
        }

        System.out.println(pmMap);
    }
}
import java.util.ArrayList;
导入java.util.Collections;
导入java.util.HashMap;
导入java.util.List;
导入java.util.Map;
公共类测试{
公共静态void main(字符串[]args){
Map pmMap=newhashmap();
List newList=newarraylist(){{add(“15”);add(“16”);add(“17”);add(“18”);};
对于(int m=0;m
首先,我猜这个
列表newList=newarraylist()
应该在更新
HashMap
的循环中,否则正如@tobias_k所提到的,您将向每个键插入相同的值。我猜你不想那样

您可以使用
keySet()
获取
Map
的键并在其中循环:

Set<String> set = pmMap.keySet();
for(String key : set) {
ArrayList<String> list = null;
if(value1.equals(key)) {
list = pmMap.get(key);
list.add(value2);
pmMap.put(key, list);
}
Set Set=pmMap.keySet();
for(字符串键:设置){
ArrayList list=null;
如果(值1.等于(键)){
list=pmMap.get(键);
列表。添加(值2);
pmMap.put(键、列表);
}

我没有检查代码,但你知道了。

这里的
pmMap
是什么?这应该是什么?
int a=list.indexOf(list);
列表本身的索引?似乎你在
为每个键将相同的列表放入映射中……这段代码到底应该做什么?list.indexOf(list)是什么
MAP: 15=[value2, 0, 0, 0] 16=[value2, 0, 0, 0, 0]  17=[value2, 0, ,0 ,0]
List<String> list = pmMap.get(value1);
if(list != null){
    Collections.replaceAll(list, value1, value2);
}
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

public class Test {     
    public static void main(String[] args) {
        Map<String, List<String>> pmMap = new HashMap<String, List<String>>();
        List<String> newList = new ArrayList<String>(){{ add("15"); add("16"); add("17"); add("18");}};

        for (int m = 0; m < newList.size(); m++) {
            String newName = newList.get(m);
            pmMap.put(newName , newList);
        }

        System.out.println(pmMap);

        String value1 = "15";
        String value2 = "19";

        List<String> list = pmMap.get(value1);
        if(list != null){
            Collections.replaceAll(list, value1, value2);
        }

        System.out.println(pmMap);
    }
}
Set<String> set = pmMap.keySet();
for(String key : set) {
ArrayList<String> list = null;
if(value1.equals(key)) {
list = pmMap.get(key);
list.add(value2);
pmMap.put(key, list);
}