gpt4 book ai didi

java - 向标准 ArrayList 添加元素与自定义 ArrayList

转载 作者:行者123 更新时间:2023-12-01 10:22:12 24 4
gpt4 key购买 nike

在下面的示例中,我将元素添加到普通的 ArrayList,然后添加到自定义的 ArrayList。虽然前者可以很好地按预期将每个元素添加到 ArrayList 中,但后者似乎只会覆盖添加的元素。

有人可以解释一下这里发生了什么以及如何解决它吗?

package jExample;
import java.util.ArrayList;

public class ForLoopArrayList {

public static void main(String[] args) {

// customized ArrayList
ArrayList<CDatabase> box = new ArrayList<>();

// standard ArrayList
ArrayList<String> var1 = new ArrayList<>();
ArrayList<String> var2 = new ArrayList<>();

CDatabase recBox = new CDatabase();

for( int i = 0; i < 9; i++){

// populating customized ArrayList
recBox.var1 = i * 1.1;
recBox.var2 = i * 11.;
box.add(recBox);

// populating standard ArrayList
var1.add( Double.toString( i * 1.1 ) );
var2.add( Double.toString( i * 11. ) );
}

for(int i = 0; i < var1.size(); i++){
CDatabase test = box.get( i );
System.out.println( var1.get( i ) + " " + var2.get( i ) + " " + test.var1);
}
System.out.println( var1.size() );
System.out.println( box.size() );
}

}

使用以下 CDatabase 类:

package jExample;

public class CDatabase {

public double var1;
public double var2;

}

最佳答案

正如我在评论中所写,问题是您不断编写相同的 CDatabase 对象,尝试每次创建一个新对象,而不是通过将 CDatabase recBox = new CDatabase(); 移动到for 循环如下:

    CDatabase recBox;

for (int i = 0; i < 9; i++) {
recBox = new CDatabase();
// populating customized ArrayList
recBox.var1 = i * 1.1;
recBox.var2 = i * 11.;
box.add(recBox);

// populating standard ArrayList
var1.add(Double.toString(i * 1.1));
var2.add(Double.toString(i * 11.));
}


干杯!

关于java - 向标准 ArrayList 添加元素与自定义 ArrayList,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35516228/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com