Java 指定对象的设置值
我猜那些是细菌 我已经创建了3个这样的对象: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值。我该怎么做?您
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;