java - 为什么我得到了错误的列表?

标签 java list hashmap system.out

我得到了一些奇怪的结果,但无法解释它们。 你有什么想法吗?为什么我会这么做

> {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/

相关文章:

java - 未获取 ListIterator 的输出

c++ - tbb::concurrent_hash_map - 如果键输入被其他线程阻塞,如何返回

java - 拆分字符串并将其存储到 HashMap java 8

java - 通过 getters/keys 从 Object/Hashmap 打印数据

java - 为什么多次调用 System.out.println 会在单行中打印值

python - Sqlalchemy 对 dict 列表的查询

python - 根据最大值的长度从 python 嵌套字典中查找项目?

java.lang.SecurityException : intent has extas while passing to other activity 错误

java - 使用 Java 和 VB.net

java - 第二个查询说,结果集已关闭