gpt4 book ai didi

java - Hashmap 中一个键的多个值

转载 作者:行者123 更新时间:2023-11-30 05:43:27 26 4
gpt4 key购买 nike

所以我有一个文件夹名称列表,我想用关键字“-”分隔它们,然后将其存储在 map 中。在该文件夹列表中,“-”字符之前可能有多个名称,因此我想获取包含相同键的所有值并存储该值。此外,“-”字符后面的名称稍后可能会有所不同。例如,这是我的一些文件夹名称:

20190220103811-2019_Release_1
20190304201669-master
20190314142918-2019_Release_1
20190314143655-develop
20190315134912-2019_Release_1
20190315135106-develop
20190315143607-develop

对于所有开发,我想存储开发 key 的值,其余的也相同。这是我到目前为止所拥有的:

File[] filteredDirectoryList = file.listFiles(textFilter);
String[] splitArr = new String[filteredDirectoryList.length];
ArrayList<String> listOfBuiltDate = new ArrayList<>();

// looping through, splitting by '-' and adding it to a map
for(File temp : filteredDirectoryList) {
System.out.println(temp.getName());
splitArr = temp.getName().split("-");


if(temp.getName().contains(splitArr[1])) {
listOfBuiltDate.add(splitArr[0]);
}

listOfDirectories.put(splitArr[1], listOfBuiltDate);
}

我当前的输出是:

Key=2019_Release_1, Value=[20190220103811, 20190304201669, 20190314142918, 20190314143655, 20190315134912, 20190315135106, 20190315143607]
Key=develop, Value=[20190220103811, 20190304201669, 20190314142918, 20190314143655, 20190315134912, 20190315135106, 20190315143607]
Key=master, Value=[20190220103811, 20190304201669, 20190314142918, 20190314143655, 20190315134912, 20190315135106, 20190315143607]

但我希望它是:

Key=2019_Release_1, Value=[20190220103811, 20190314142918, 20190315134912]
Key=develop, Value=[20190314143655, 20190315135106, 20190315143607]
Key=master, Value=[20190304201669]

我不确定如何将值添加到列表并将它们添加到 map 。我正在考虑添加多个列表,这些列表只会根据每个键添加(2019_Release_1),但可能有更多键,因此可能不好。

最佳答案

您的方法是正确的,但您不能对所有条目使用相同的列表

每个都必须有一个列表

所以你的HashMap需要更改为:

HashMap<String, List<String>> listOfDirectories = new HashMap<>();

然后像这样填充它:

for(File temp : filteredDirectoryList) {

splitArr = temp.getName().split("-");

//HERE IS WHERE YOU CREATE THE NEW LIST IF THE KEY DOESN'T HAVE IT
if(!listOfDirectories.containsKey(splitArr[1])) {
listOfDirectories.put(splitArr[1], new ArrayList<>());
}

listOfDirectories.get(splitArr[1]).add(splitArr[0]);
}

关于java - Hashmap 中一个键的多个值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55263762/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com