哈希表的价值不会增加

时间:2014-10-08 16:52:50

标签: java hashtable

以下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;。

2 个答案:

答案 0 :(得分:7)

您正在使用contains,它确定参数是否作为Hashtable中的值存在,而不是作为键。由于找不到,因此您put一遍又一遍1

改为使用containsKey,它确定参数是否作为键存在。

if(testTable.containsKey(symbol)){

答案 1 :(得分:0)

contains检查HashTable值。在这种情况下,您需要检查密钥,以便用于containsKey