我得到了一些奇怪的结果,但无法解释它们。 你有什么想法吗?为什么我会这么做
> {Level=1 - Normal, Name=IT/Java}
> {Level=2 - Medium, Name=IT/Ruby}
> [{Level=2 - Medium, Name=IT/Ruby}, {Level=2 - Medium, Name=IT/Ruby}]
来自系统? 当它实际上应该是
> {Level=1 - Normal, Name=IT/Java}
> {Level=2 - Medium, Name=IT/Ruby}
> [{Level=1 - Normal, Name=IT/Java}, {Level=2 - Medium, Name=IT/Ruby}]
这是我的代码。
public List<Map<String, Object>> getMapsforTables() {
levelList = this.getSkilllevel();
description = this.getSkillnames();
Map<String, Object> rm = new HashMap<String, Object>();
List<Map<String, Object>> l = new LinkedList<Map<String, Object>>();
for(int i=0; i < levelList.size(); i++){
rm.clear();
rm.put("Name", description.get(i));
rm.put("Level", levelList.get(i));
System.out.println(rm);
l.add(rm);
}
System.out.println(l);
return l;
}
最佳答案
因为在每次迭代中,您都会修改相同的对象并将其添加到列表中。你可以这样做:
for(int i = 0; i < levelList.size(); i++){
Map<String, Object> rm = new HashMap<String, Object>();
rm.put("Name", description.get(i));
rm.put("Level", levelList.get(i));
System.out.println(rm);
l.add(rm);
}
关于java - 为什么我得到了错误的列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27904484/