HashMap值更改为插入List中的最后一个对象

时间:2016-10-10 10:57:53

标签: java list reference hashmap

当我绘制List时,对象是不同的,但只有HashMap值与List中插入的最后一个值相同。

在创建(循环)期间,我尝试绘制HashMap值,它们是不同的。我用它来生成图表并进行一些计算。但是,当我将它添加到列表中时,所有值都变得相同,或者每次创建新对象时,它都会更改列表中所有对象的HashMap值。

这是我的代码:https://github.com/Willtl/2/tree/master/GAScheduling/src/main/java/uni/lu

在Main.java中,我正在创建一个新的人口:

JFormattedTextField formatedField= new JFormattedTextField();
formatedField.setFormatterFactory (new DefaultFormatterFactory (new Date Formatter (new SimpleDateFormat ("yyyy-MM-dd"))));

在Population构造函数中:

plotOptions: {
        series: {
            cursor: 'pointer',
            point: {
                events: {
                    mouseOver: function(event) {
                        $mouseState.html("mouse state OVER: " +  this.category);
                    },
                    mouseOut: function() {
                        $mouseState.html("mouse state OUT: " + this.category);
                    }
                }
            }
        }
    }

在每个人中,我正在改组HashMap genesPlate的每个ArrayList。

Population pop = new Population(jobs, machines, genesPlate, populationSize);

直到这里一切都好。我正在策划,事实上它已被洗牌了。我使用job和这个genePlate(随机机器序列)来生成图表并计算每个人的适应度。

然而,我试图评论这段代码并没有发生任何事情(概率保持不变)。所以我觉得这段代码还可以。

我被困了几天。我尝试了一切。我希望有人可以帮助我。

1 个答案:

答案 0 :(得分:1)

Java只有原始和引用变量。

将List的引用添加到Map时,仅复制对List的引用,而不复制它引用的List。如果您只创建一个List并将其添加到Map的引用,则仍然只有一个List对象。

要确认这一点,您可以通过逐步调试调试器中的代码来查看这一点,以确定您的地图很可能包含指向同一列表的所有值。