Hasmap返回重复的键

时间:2015-09-28 23:13:40

标签: java

我有扫描器解析文件并将索引1和2放入散列图。

假设k1 = 5且下一个k1 = 5

它会打印出来:5和10 虽然我只想广告价值并只显示一个键。所以我想要添加值并为“10”

while (scanner.hasNextLine()) {             
    InputLine = scanner.nextLine();
    String[] arr = InputLine.split("\t");

    if(map.containsKey(arr[1])){
        map.put(arr[1], map.get(arr[1]) + Integer.parseInt(arr[2]));
        }
    else
    {
        map.put(arr[1], Integer.parseInt(arr[2]));
    }               
    System.out.println(map.get(arr[1]));
    }

1 个答案:

答案 0 :(得分:-1)

这可能只是一个有意义的答案。 首先,没有重复的密钥可以存储在" Set"中。所以每一个"关键"有一个唯一的哈希码。你使用" String"作为钥匙。解析完行后,数组的第二个元素就成了你的关键。

你说你有两个5岁。

XX        5//ends up with no chars
YY        5 //ends up with a white-space

对于XX行,您的第一个键绝对是" 5"。 在YY排,你的钥匙变成" 5"。

两个字符串具有不同的哈希码。这就是为什么它们可以存储在密钥中的原因" Set"。

在" \ t"之前或之后检查您的文件字符。请确保在数字之前或之前是否有其他字符。