以下Java代码:
public class TestCSVDataToMap {
public static Hashtable<String, Integer> testTable = new Hashtable<>();
public static void main (String[] args) throws IOException {
BufferedReader reader = new BufferedReader(new FileReader("test.csv"));
String line;
while ((line = reader.readLine()) != null) {
String symbol = "0";
if(testTable.contains(symbol)) {
int value = testTable.get(symbol);
value++;
testTable.put(symbol, value);
}
else {
System.out.println("dash!");
testTable.put(symbol, 1);
}
}
System.out.println(testTable);
}
}
有输出:
dash!
dash!
dash!
dash!
{0=1}
为什么没有关键&#39; 0&#39;的价值。解析.csv文件时增长?在testTable(一个Hashtable)中,它用(0,1)初始化,并且值应该保持增长,因为符号总是被检测为&#39; 0&#39;。
答案 0 :(得分:7)
您正在使用contains
,它确定参数是否作为Hashtable
中的值存在,而不是作为键。由于找不到,因此您put
一遍又一遍1
。
改为使用containsKey
,它确定参数是否作为键存在。
if(testTable.containsKey(symbol)){
答案 1 :(得分:0)
contains
检查HashTable值。在这种情况下,您需要检查密钥,以便用于containsKey
。