加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

java-如何在不覆盖先前副本的类中向ArrayList添加对象

发布时间:2020-12-14 19:26:47 所属栏目:Java 来源:网络整理
导读:尝试创建更多汽车实例,但是当我将它们添加到数组中时,它们将覆盖先前的实例,这是因为ArrayList位于我创建的每个实例中,所以最好创建一个包含ArrayList的清单类一切? import java.util.ArrayList;public class Automobile {private String make;private Stri

尝试创建更多汽车实例,但是当我将它们添加到数组中时,它们将覆盖先前的实例,这是因为ArrayList位于我创建的每个实例中,所以最好创建一个包含ArrayList的清单类一切?

import java.util.ArrayList;

public class Automobile {

private String make;
private String color;
private int year;
private int mileage;
private ArrayList<Automobile> autoArray = new ArrayList<>();

public Automobile(String make,String color,int year,int mileage) {
    this.make = make;
    this.color = color;
    this.year = year;
    this.mileage = mileage;
    autoArray.add(this);


}

//setters (mutators)
public void setYearModel(int y) {
    year = y;
}

public void setMake(String type) {
    make = type;
}

public void setColor(String col) {
    color = col;
}

public void setMileage(int miles) {
    mileage = miles;
}

public String toString() {
    return "test = " + color + "; test " + year + "; test " + year + "; test " + make;
}


private ArrayList addVehicle(String m,String c,int y,int mile) {
    this.make = m;
    this.color = c;
    this.year = y;
    this.mileage = mile;
    autoArray.add(this);
    return autoArray;
 }
    public static void main(String[] args) {

    Automobile cars = new Automobile("kelvin","luke",6,9 );
    cars.autoArray.forEach(System.out::println);
    cars.addVehicle("horny",9 );
    cars.autoArray.forEach(System.out::println);
}

}

最佳答案
您需要在addVehicle()中创建一个新的Automobile,而不是修改现有的Automobile:

private ArrayList addVehicle(String m,int mile) {
    autoArray.add(new Automobile(m,c,y,mile));
    return autoArray;
}

那应该解决您的问题.但是,是的,理想情况下,您还应该按照其他注释者的建议重构代码,因为创建ArrayList< Automobile>在汽车的每个实例中.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读