当我绘制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(随机机器序列)来生成图表并计算每个人的适应度。
然而,我试图评论这段代码并没有发生任何事情(概率保持不变)。所以我觉得这段代码还可以。
我被困了几天。我尝试了一切。我希望有人可以帮助我。
答案 0 :(得分:1)
Java只有原始和引用变量。
将List的引用添加到Map时,仅复制对List的引用,而不复制它引用的List。如果您只创建一个List并将其添加到Map的引用,则仍然只有一个List对象。
要确认这一点,您可以通过逐步调试调试器中的代码来查看这一点,以确定您的地图很可能包含指向同一列表的所有值。