机器学习为什么改变了java中等式的两面?
我有一个奇怪的问题,把我完全弄糊涂了
我正在为我的项目使用WEKA,我想更改数据集的类值以测试一些东西;因此,我将数据集保存到另一个名为d的值中,并使用setClassValue方法更改类值。最后,我在d和dataset变量中打印每个实例的类值
Instances d=dataset;
for (int i = 0; i <dataset.size(); i++) {
dataset.get(i).setClassValue(10);
System.out.println(dataset.get(i).classValue()+ "\t" +d.get(i).classValue() );
}
结果不可信,d和数据集类值都已更改为什么会发生这种情况?考虑到应该保留原始数据集,如何更改数据集的类值
# 1 楼答案
现在有两个变量都引用相同的对象
不像C++,java从不隐式复制任何东西。br/> 如果您想要一个对象的单独副本,您需要自己制作一个
如果对象实现了
Cloneable
,那么可以使用clone()
实现