java - 为什么java中等式两边都变了?

标签 java machine-learning weka

我有一个奇怪的问题,让我完全困惑。

我在我的项目中使用 WEKA,并且我想更改数据集的类值来测试某些内容;因此,我将数据集保留到另一个名为 d 的值中,并使用 setClassValue 方法来更改类值。最后,我打印 d 和数据集变量中每个实例的 classValues。

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 和数据集类值均已更改。为什么会发生这种情况?考虑到我应该保留原始数据集,如何更改数据集的类值?

最佳答案

d=dataset

您现在有两个变量,它们都引用同一个对象。

与 C++ 不同,Java 从不隐式复制任何内容。
如果您想要一个对象的单独副本,您需要自己制作一个。

如果对象实现了Cloneable,您可以使用clone()来实现。

关于java - 为什么java中等式两边都变了?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18168542/

相关文章:

java - 如何在 Android 中使用计时器?

python - 关于不同python版本的安装

python - LSTM ValueError : non-broadcastable output operand with shape (879, 1) 与广播形状不匹配 (879,18)

python - 训练和验证数据结构

java - WEKA - 将实例分配给 kmeans.buildClusterer 时出错

java - 如何同时评估值(value)

java - 使用 neo4j 嵌入式 java api 为关系添加权重

java - Java/Scala 中 readline 的奇怪行为

java - 使用 Java 中的 Weka 进行基本文本分类

machine-learning - 使用SVM对电信号进行分类