我的 HashMaps 有一个奇怪的情况。在遍历 HashMap 的 keySet() 时,我得到了重复的值。在尝试获取值时,我得到了 NULL。
这是我的 HashMap 实现:
import java.util.ArrayList;
import java.util.HashMap;
public class StreetsMap extends HashMap<String, ArrayList<String[]>> {
public void put(String key, String[] data) {
ArrayList<String[]> current = get(key);
if (current == null) {
current = new ArrayList<String[]>();
super.put(key, current);
}
current.add(data);
}
}
从 CSV 文件中读取行时,我正在用值填充 HashMap。
我在 CSV 中有这样的内容(原始列表更长):
Location_Code、Street_Name、开始、结束、奇偶
01001, JustAStreet ST, 1, 11, odd
01001, JustAStreet ST, 17, 47, odd
... more of this
01001, JustAStreet ST, 2, 30, even
01001, JustAStreet ST, 40, 80, even
01001, AnotherStreet ST, 3, 27, odd
01001, AnotherStreet ST, 9, 51, odd
... and even more
01001, AnotherStreet ST, 0, 50, even
01001, AnotherStreet ST, 2, 14, even
01001, AnotherStreet ST, 0, 100, even
我用逗号分隔一行,修剪值并用数据填充 HashMap:
String[] lines = inputText.split("\n");
StreetsMap streetsData = new StreetsMap(); //
for (String line : lines) {
String[] newLine = line.split(",");
String[] streetData = new String[4];
streetData[0] = newLine[0].trim(); // Location code
streetData[1] = newLine[2].trim(); // Start
streetData[2] = newLine[3].trim(); // End
streetData[3] = newLine[4].trim(); // OddEven
streetsData.put(newLine[1].trim(), streetData);
问题就从这里开始。如果我遍历 keySet():
for (String name : streetsData.keySet()) {
System.out.println(name);
}
我有类似的东西:
- 贾斯特街
- 另一条街
- 另一条街
- 贾斯特街
- 贾斯特街
当我尝试在通过 HashMap 迭代期间使用 .get(key) 方法访问数据时,有时我会得到空值。所以我正在失去价值。:(
我的问题是:在 HashMap 中有重复的键怎么可能是真实的?我做错了什么。
UPD:密钥是唯一的。在另一个班级发现问题。