Java 如何从ArrayList访问对象中的数据?

Java 如何从ArrayList访问对象中的数据?,java,Java,例如,我有一个名为Boxcar的自定义类,使用方式如下: public Boxcar(String c, int u, boolean r) private ArrayList<Boxcar> train = new ArrayList<Boxcar>(); 在另一个类中,我初始化一个名为train的Boxcars数组列表,如下所示: public Boxcar(String c, int u, boolean r) private ArrayList<Box

例如,我有一个名为Boxcar的自定义类,使用方式如下:

public Boxcar(String c, int u, boolean r)
private ArrayList<Boxcar> train = new ArrayList<Boxcar>();
在另一个类中,我初始化一个名为train的Boxcars数组列表,如下所示:

public Boxcar(String c, int u, boolean r)
private ArrayList<Boxcar> train = new ArrayList<Boxcar>();

这当然不会编译,因为它需要int u和boolean r的值。如何访问字符串c?对于noobish编程很抱歉,我希望我已经说得够具体了。

您的
for
循环中的代码不会改变列表中的任何内容。它只是将一辆新车分配给一个局部变量
b
(前提是它正确调用了构造函数),使数组列表保持不变

您需要的是更改
Boxcar
对象上的值,通常使用setter执行此操作:

for(Boxcar b: train) {
    b.setC(replace);
}
这假设您的
Boxcar
类具有getter和setter:

public Boxcar(String c, int u, boolean r){
   //constructor code
}
public getC(){
    return this.c;
}
public setC(String c){
    this.c = c;
}

标准实践是在类中为希望在实例化该类的对象后获取或更改的变量设置getter/setter

所以在你的
Boxcar
课程中

public int getU() {
    return u;
}

public void setU(int newValue){
    this.u = newValue;
}
这样,您就可以将变量
u
保持私有,同时仍然可以通过这些getter和setter进行访问。 然后,您可以使用
for
循环遍历
Boxcars
ArrayList
,并调用setter方法来更改您希望更改的值,并相应地进行更改


作为旁注,我建议您将变量名
c
u
r
更改为更人性化的名称,因为这些值没有说明这些值的含义

在您的
Boxcar
类中,为
String
c实现一个setter,以便您可以操作它并更改它的值。
Boxcar
的实现是什么?它不是有一个用于
字符串c
的getter/setter吗?我们能得到完整的
Boxcar
代码吗?