我的外部地图包含字符串作为键,值包含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.
答案 0 :(得分:0)
问题必须是这一行:
firstColm = textData[0];
可能的原因:
\t
\t
之前还有其他空格。 " 1 "
不等于"1"
要调试此功能,请添加
System.out.println("["+firstColm+"]")
在上面一行之后,看看你真正拥有的是什么键。