gpt4 book ai didi

Java HashMap> 添加集合元素后丢失

转载 作者:行者123 更新时间:2023-12-01 10:56:47 24 4
gpt4 key购买 nike

以下代码的目的是一次获取一本书的标题,将其拆分为关键字(用空格分隔的任何内容)并将生成的关键字映射到包含关键字作为索引和集合的 HashMap 中整数(表示书籍在 ArrayList arrayOfReferences 中的位置)。

Set<Integer> toAdd = new HashSet<Integer>();
for (String keyword : addTitle.split(" ")) {
toAdd.clear();
if (!searchMap.containsKey(keyword.toLowerCase())) {
if (!toAdd.contains(arrayOfReferences.indexOf(newBook))) {
toAdd.add(arrayOfReferences.indexOf(newBook));
searchMap.put(keyword.toLowerCase(), toAdd);
System.out.println("New flag: " + keyword + " " + searchMap.get(keyword.toLowerCase()));
}
}
else
{
for (Integer addNum : searchMap.get(keyword.toLowerCase())) {
toAdd.add(addNum);
}

System.out.println("Before: " + keyword + " " + toAdd);
if (!toAdd.contains(arrayOfReferences.indexOf(newBook))) {
toAdd.add(arrayOfReferences.indexOf(newBook));
searchMap.put(keyword.toLowerCase(), toAdd);
}
System.out.println("After: " + keyword + " " + searchMap.get(keyword.toLowerCase()));
}
}

目前,代码将相应的索引添加到 HashMap 中,将附加位置添加到列表中,然后丢失列表中以前的值。我对 Java 还很陌生,所以这个问题可能就摆在我面前,但我需要用新的眼光来看待它。

非常感谢任何帮助!

最佳答案

toAdd 是对 java heap 中某个集合 (Set) 的“引用”。每个循环都有对同一集合的相同引用 - 并修改其后面的数据(替换它)。相反,我相信,您希望在 java 堆中创建对新 java 对象的新引用。要实现它,而不是

- toAdd.clear();

你应该

+ toAdd = new HashSet<Integer>();

关于Java HashMap<String, Set<Int>> 添加集合元素后丢失,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33587845/

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