1.场景
给HashMap<String, List<String>>赋值,value是List。
2.解决
如果map中存在key,就在value后面追加;如果map中不存在key,就新建一个ArrayList,然后追加。
@Test
public void mapValueList(){
HashMap<String, List<String>> map = new HashMap<>();
for (int i = 0; i < 5; i++) {
List<String> list = map.computeIfAbsent(""+i, k -> new ArrayList<String>());
list.add(""+i);
}
System.out.println(map);
}
3.运行结果
{0=[0], 1=[1], 2=[2], 3=[3], 4=[4]}
4.结论
虽然在for循环中“没有”操作map,但是使用list指向了map的那个key,list发生了变化,map对应的key的位置就发生了改变。