如何在每个循环上为对象指定不同的名称

时间:2017-04-26 15:30:55

标签: java loops object

我试图创建一个可变数量的对象,并使用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;在每个循环中,每个循环都有不同的名称。

2 个答案:

答案 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);