gpt4 book ai didi

java - 将 hashmap 作为值添加到 hashmap

转载 作者:行者123 更新时间:2023-12-02 10:32:56 26 4
gpt4 key购买 nike

在下面的代码中,我创建一个临时 HashMap 并将其作为值添加到另一个 HashMap ,在 while 循环结束时,csvList HashMap 只有临时值的最后一个值具有作为值添加的 map ,所有其他值为空

键被保留,所有值都被 null 替换。我在这里做错了什么,是 temp.clear 还是声明临时 HashMap 的地方。

HashMap<String, HashMap<String, String>> csvList = new HashMap<String, HashMap<String, String>>();

HashMap<String, String> tempMap = new HashMap<String, String>();
List<String> line = null;
try {
inputStream = new FileInputStream(csvFile);

//scanner = new Scanner(inputStream);
scanner = new Scanner(inputStream, "UTF-8");
//scanner.useDelimiter("\r\n");

int i = 0;
while (scanner.hasNext()) {
//tempMap.clear();
if (i == 0) {
headList = parseLine(scanner.nextLine());
i++;
} else {
line = parseLine(scanner.nextLine());
pKey = "";

for (int j = 0; j < line.size(); j++) {
if (!selectClause.toLowerCase().contains(headList.get(j).toLowerCase()))
continue;
else {
// Change for multiple PKeys
if (primaryKey.toLowerCase().contains(headList.get(j).toLowerCase())) {
pKey = pKey + line.get(j);
}
if (headList.get(j).equalsIgnoreCase(primaryKey))
pKey = line.get(j);
tempMap.put(headList.get(j).toLowerCase(), line.get(j));
}
}
//System.out.println(i++);
line.clear();
csvList.put(pKey, tempMap);
}
//tempMap.clear();

}
headList.clear();
//tempMap.clear();
scanner.close();
}

return csvList;
}

最佳答案

您在 while 循环之外创建 tempMap,因此它是您一直使用的同一个实例,将创建内容移到循环内,以便 csvList 中的每个 pKey 都获得一个唯一的实例

while (scanner.hasNext()) {
HashMap<String, String> tempMap = new HashMap<String, String>();
...

关于java - 将 hashmap 作为值添加到 hashmap,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53499570/

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