Java hashmap找不到现有条目

时间:2019-01-03 01:40:03

标签: java csv

我遇到了一个非常奇怪的问题:我写了一个CSV解析器,它将第一行作为标题读取,然后创建一个映射,其中key是标题,value是后续行中的值。

问题是地图似乎无法检索第一列标题的值。如此处所示: enter image description here

如您所见,“ abc”位于HashMap条目#23内,但是当我检索它时,它将显示为空。

我认为这与我的CSV文件有关,但是为什么映射项正确显示在调试器上却无法检索?

我的CSV文件如下所示:

  

abc,数据   源,实体,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23, 24   NA,source1,entity1,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124

1 个答案:

答案 0 :(得分:8)

您观察到的调试器结果的唯一可能的解释是,第一列标题实际上是{em>不是 "abc"。其中可能包含一个或多个其他非打印字符。当然,它们不会在调试器的地图内容列表中打印,但是它们仍在其中,因此实际上键"abc"并不存在于地图中。实际上,它类似于"<some_non-printing_character>abc"。另外,也可能是您有不同的字符在显示器上呈现相同的字符。无论哪种方式,都可以使用十六进制编辑器检查输入文件以了解真相。

该列为第一列,一个额外字符的可能候选者是Unicode BOM U + FEFF,它显示为文件的第一字符。一些文本编辑器会插入诸如魔术数字之类的字符,将文件标记为以UTF-8进行编码,尽管实际上UTF-8并不需要这样做,并且除了赋予其本身以外,没有赋予此字符任何意义。