从我的hashmap中检索列表值将返回null

时间:2013-05-23 13:31:07

标签: java list map

我的外部地图包含字符串作为键,值包含ArrayList,后者又将键和值的内部映射保存为字符串。当我尝试将数据放入列表并映射并迭代外部地图时,它工作正常。但是当我尝试检索给定键的特定列表值时,它返回null

我做错了什么?我的外部地图结构是:

 Map<String,List<HashMap<String,String>>>
    Myclass{

        private static void method1{
        //Other code reading my file            
            while (((lineReader = bReader.readLine()) != null)
                    && (lineReader.length() > 0)) {
                innerMap = new HashMap<String, String>();
                textData = lineReader.split("\t");
                firstColm = textData[0];
                innerMap .put("secondColm", textData[1]);
                innerMap .put("thirdColm", textData[2]);

                if (outerMap.containsKey(firstColm)) {
                    MyList = (List) outerMap.get(firstColm);
                } else {
                    MyList = new ArrayList<Map<String, String>>();
                    outerMap.put(firstColm,MyList );

                }
                MyList.add(innerMap );
            }
                      }
        public static List<Map<String, String>> getDetails(String key) {
            return outerMap.get(key);
        }
    }
        Myclass2
        { 
        public static void main(String args[]) {
            List<Map<String, String>> Mylist = Myclass.getDetails("1");
            System.out.println("User Data :"+ Mylist);      
        } }

我执行此操作以读取文本文件并将其存储在innermap中,将其分组为列表,并将列表用作将其与另一个密钥一起存储的值。

 getDetails("1") 1 -> specifies the key of the outer map. 

1 个答案:

答案 0 :(得分:0)

问题必须是这一行:

firstColm = textData[0];

可能的原因:

  • 第一列之前有\t
  • 在该行的第一个\t之前还有其他空格。 " 1 "不等于"1"

要调试此功能,请添加

System.out.println("["+firstColm+"]")

在上面一行之后,看看你真正拥有的是什么键。