gpt4 book ai didi

java - 将值插入 HashMap 无法正常工作

转载 作者:行者123 更新时间:2023-12-01 23:11:04 25 4
gpt4 key购买 nike

我正在尝试插入 String 的值和ArrayList<String>进入HashMap<String, ArrayList<String>> 。 for 循环中的代码工作正常,但在将 ArrayList 值插入 HashMap 时,它没有插入我想要的值。

我的代码:

  for(int i=0; i<fileNames.length; i++)
{
File imageFile = new File(fileNames[i]);
metadata = ImageMetadataReader.readMetadata(imageFile);

String[] results;
container.clear();
println(container);

for (Directory directory : metadata.getDirectories())
{
for (Tag tag : directory.getTags())
{
if(tag.getTagName() == "Keywords")
{
results = tag.getDescription().split(";");

for(int k=0; k<results.length; k++)
{
keywords.add(results[k]);
container.add(results[k]);
}
println(fileNames[i] + ", " + container);
imageTag.put(fileNames[i], container);
}
}
}
}

println(imageTag.entrySet());
}

打印出:

[]
gardensbythebay.jpg, [gardens, gardens by the bay, supertree, singapore]
[]
mbs.jpg, [marina, bay, sands, ferris, wheel, skyline, singapore]
[]
supertree.jpg, [architecture, marina, gardens, bay, tower, supertree, singapore, gardens by the bay, plants, nature]
[]
uss.JPG, [universal, uss, rws, resort, world, sentosa, studios]

[mbs.jpg=[universal, uss, rws, resort, world, sentosa, studios],
uss.JPG=[universal, uss, rws, resort, world, sentosa, studios],
supertree.jpg=[universal, uss, rws, resort, world, sentosa, studios],
gardensbythebay.jpg=[universal, uss, rws, resort, world, sentosa, studios]]

最佳答案

您不断重复使用同一个 ArrayList。因此,当您清除它时,它也会清除您之前放置在 map 中的内容。当您填充它时,它也会填充 map 中已有的内容。因此,您最终的所有键都指向包含上次运行数据的同一列表。

您需要为每个条目创建一个新的ArrayList。

关于java - 将值插入 HashMap 无法正常工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21966663/

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