我试图创建一个可变数量的对象,并使用while循环将它们添加到hashMap。但是,我希望每个对象都有不同的名称,我不知道该怎么做。
这是我的代码:
public void petrolStation(int amountOfPumps)
{
private HashMap<Integer, Pump> pumps = new HashMap<>();
int i = 0;
while(i <= amountOfPumps)
{
Pump p1 = new Pump();
pumps.put(i, p1);
i++;
}
}
所以我无法弄清楚的是,而不是拥有&#39; p1&#39;在每个循环中,每个循环都有不同的名称。
答案 0 :(得分:1)
有一些非常复杂的模式与反射API如何在运行时动态生成标识符,但是,这几乎没有任何意义。
相反,您应该使用您用于将它们放在地图上的键来识别您的对象。地图是处理动态生成的对象数量的绝佳方式。因此,不要在以后引用p1,p2,p3,而是编写pumps.get(1),pumps.get(2),pumps.get(3)......
另请注意,您的索引已关闭。以i = 1开始或以i <1开始终止。 amountOfPumps(除非你真的想要一个比泵更多的对象)。
答案 1 :(得分:-1)
p1
是while循环的每次迭代中的新对象,在一次迭代中创建的任何对象与另一次迭代之间没有任何关系。 p1
只是堆内存中创建的对象的标识符。
如果您不想使用标识符p1
(由于某种原因),那么您可以这样做:
pumps.put(i, new Pump());
而不是:
Pump p1 = new Pump();
pumps.put(i, p1);