这个HashMap的值循环一次就会被覆盖,应该怎么解决呢???

图片说明
这个HashMap存的map的值循环一次就会被覆盖,应该怎么解决呢???
能让它存入每一次put的值。

一个map中,key值是唯一的,所以想要一个相同的key值拥有多个值。就得采用key -> 数组或集合(将同个key值的value用数组或集合收集,再设置),你上面这种相当于将map一个key值所对应的值设置了无数次

这不叫覆盖,你每次循环都new了一个,根本不是原来那一个了。
map在循环外面new出来,当入参传进去就行了,return也不需要了直接void

没仔细看,只解决了其一,另一个看楼下的吧

看代码和你说的话不是很能理解你的需求,因为你没把你的循环代码显示出来
猜测一下:你的目的是得到
[{taskName:"name", fileName:"name"},
{taskName:"name", fileName:"name"},
{taskName:"name", fileName:"name"},
……]
这样?

那么你外面的循环大概应该是

List<Map<String, String>> list = new ArrayList<Map<String, String>>();
for (…………) {
…………
list.add(getTaskNameAndMusicName(id, type));
…………
}

更新:
大概懂你意思了,那么你应该这样写:

Map<String, List<String>> map = new HashMap<String, String>();
List<String> taskNameList = new ArrayList<String>();
List<String> fileNameList = new ArrayList<String>();
map.put("taskName", taskNameList);
map.put("fileName", fileName);
for(.....) {
...
TaskMapper mapper = type.equals("T") ? tempTaskMapper : timeingTaskMapper;
TaskDto dto = mapper.getTaskNameAndMusicName().get(0);
taskNameList.add(dto.getTaskName());
fileNameList.add(dto.getFileName());
}
...

猜了一个类名TaskMapper,你按照你实际的来就可以

你把map放到循环外面一层去,因为你每次循坏的这个这个map都会创建一个新的map。

姑且猜一下题主的意思:是为了得到一个list。

for (int i = 0; i < length; i++) {
        Map<String, String> map = getTaskNameAndMusicName(id, type);
        list.add(map);
}

private  Map<String,String> getTaskNameAndMusicName(int id, String type) {
        Map<String, String> map = new HashMap<>();
        if (type.equals("T")) {
            map.put("taskName", "1");
            map.put("fileName","1");
        } else {
            map.put("taskName", "2");
            map.put("fileName","2");
        }
        return map;
}

算了,猜不出来。推荐一本书给题主:《学会提问》
嘿嘿```