Java 指定对象的设置值

Java 指定对象的设置值,java,constructor,Java,Constructor,我猜那些是细菌 我已经创建了3个这样的对象: for (int j = 1; j < 4; j++) { int parkingSlot= 1 + rd.nextInt(3); AircraftCarrier ac= new AircraftCarrier (fc, j, parkingSlots, parkingSlots); } 我有3艘航空母舰,对吗?假设我需要更改id为2的运营商的freeParkingSLots值。我该怎么做?您

我猜那些是细菌

我已经创建了3个这样的对象:

    for (int j = 1; j < 4; j++) {
        int parkingSlot= 1 + rd.nextInt(3);
        AircraftCarrier ac= new AircraftCarrier (fc, j, parkingSlots, parkingSlots);

    }

我有3艘航空母舰,对吗?假设我需要更改id为2的运营商的freeParkingSLots值。我该怎么做?

您创建了三个实例,但由于您没有维护对其中任何一个实例的引用,因此您不再拥有它们。他们被送到垃圾收集站

您需要将每个实例存储在某个集合中,以便以后访问

 List<AircraftCarrier> myList = new ArrayList<AircraftCarrier>();
 for (int j = 1; j < 4; j++) {
    int parkingSlot= 1 + rd.nextInt(3);
    AircraftCarrier ac= new AircraftCarrier (fc, j, parkingSlots, parkingSlots);
    myList.add(ac);
}
List myList=new ArrayList();
对于(int j=1;j<4;j++){
国际停车场=1+3号路;
航空母舰ac=新航空母舰(fc、j、停车场、停车场);
添加(ac);
}

您必须将载波存储在阵列中:

AircraftCarrier[] carriers = new AircreaftCarrier[3];
for (int j = 0; j < carriers.length; j++) {
    int parkingSlot= 1 + rd.nextInt(3);
    AircraftCarrier ac = new AircraftCarrier (fc, j + 1, parkingSlots, parkingSlots);
    carriers[i] = ac;
}

您创建了每个实例,但没有保存它们。因此,循环之后,对象“消失”。 使用

List carriers=new ArrayList();
对于(int j=1;j<4;j++){
国际停车场=1+3号路;
航空母舰ac=新航空母舰(fc、j、停车场、停车场);
承运人。添加(ac);
}

由于您已将id 2分配给第二个元素,现在可以使用
载体访问它。get(1)
get(0)
将为您提供第一个元素)。

您必须将载体“放置”在某个位置,以便以后可以访问它们:

Map<Integer, AircraftCarrier> carriers = new HashMap<Integer, AircraftCarrier>();

for (int j = 1; j < 4; j++) {
    int parkingSlot= 1 + rd.nextInt(3);
    AircraftCarrier ac= new AircraftCarrier (fc, j, parkingSlots, parkingSlots);
    carriers.put(j, ac);
}

/* update carrier with ID 2 */
carriers.get(2).fps = 1;
Map carriers=newhashmap();
对于(int j=1;j<4;j++){
国际停车场=1+3号路;
航空母舰ac=新航空母舰(fc、j、停车场、停车场);
载体。put(j,ac);
}
/*使用ID 2更新载体*/
承运人.get(2).fps=1;

您的航空母舰物品存放在哪里?在列表中?在字典里?我想,喝几杯啤酒后编码是行不通的。我真是个新手。两个答案都是正确的。我必须接受一个。我要选一张对我来说更舒服的单子。无论如何谢谢:)只有当
AircraftCarrier
类使用
返回id重写
int hashCode()
方法时,这才有效,在处理hashmaps时千万不要忘记这个细节。此外,根据约定,您还必须重写
布尔等于(对象o)
@f1sh:不,在这种情况下,键是一个已经覆盖了两者的整数,它不是一个集合:-)你说得太对了。出于某种奇怪的原因,我认为AircraftCarrier类被用作地图中的键-请忽略我的第一个错误评论,各位。
carriers[1].fps = 6; // You wanted id=2. Since we count from zero in Java, use 1
List<AircraftCarrier> carriers = new ArrayList<AircraftCarrier>();
for (int j = 1; j < 4; j++) {
  int parkingSlot = 1 + rd.nextInt(3);
  AircraftCarrier ac = new AircraftCarrier (fc, j, parkingSlots, parkingSlots);
  carriers.add(ac);
}
Map<Integer, AircraftCarrier> carriers = new HashMap<Integer, AircraftCarrier>();

for (int j = 1; j < 4; j++) {
    int parkingSlot= 1 + rd.nextInt(3);
    AircraftCarrier ac= new AircraftCarrier (fc, j, parkingSlots, parkingSlots);
    carriers.put(j, ac);
}

/* update carrier with ID 2 */
carriers.get(2).fps = 1;