0

我的外部映射包含作为键的字符串和作为 an 的值,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. 
4

1 回答 1

0

问题必须是这一行:

firstColm = textData[0];

可能的原因:

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

要调试它,请添加

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

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

于 2013-05-23T16:02:41.850 回答