以下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}

解析.csv文件时,为什么键'0'的值没有增加?在testTable(一个Hashtable)中,将其初始化为(0,1),并且该值应保持增长,因为该符号始终被检测为键“0”。

最佳答案

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

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

if(testTable.containsKey(symbol)){

10-04 17:26