通过for循环添加具有不同名称的对象

时间:2010-03-12 13:08:09

标签: java

执行以下操作的最佳方法是:

List<MyObject> list = new LinkedList<MyObject>();

for(int i=0; i<30;i++)
{
  MyObject o1 = new MyObject();
  list.add(o1);
}

但事情是我不想创建具有相同名称的对象,我想用不同的名称创建它们,如o1,o2,o3,o4,o5,o6,o7,o8,o9,o10,我想将每个添加到列表中。这样做的最佳方式是什么?

6 个答案:

答案 0 :(得分:10)

您不需要为每个对象使用不同的名称。由于o1对象是在for循环中声明的,因此o1变量的范围仅限于for循环,并且在每次迭代期间重新创建...除了每次它将引用在该迭代期间创建的新对象。请注意,变量本身不存储在列表中,只存储在它所引用的对象中。

如果你不需要对新对象做任何其他事情而不是将其添加到列表中,你可以这样做:

for(int i=0; i<30;i++)
{
  list.add(new MyObject());
}

答案 1 :(得分:7)

你为什么要给他们不同的名字?你正在for循环中创建对象,因此它不存在于外部,因此我认为没有理由给它们不同的名称。

回答你的问题:我看到的唯一方法,但我可能错了,就是创建一个MyObjects数组并执行:

List<MyObject> list = new LinkedList<MyObject>();
MyObject[] o = new MyObject[30];

for(int i = 0; i < 30; i++) {
    o[i] = new MyObject();
    list.add(o[i]);
}

答案 2 :(得分:2)

在循环的上下文中,您不必担心为您创建的每个新实例提供一个名称。这足以说明了

List<MyObject> list = new LinkedList<MyObject>();

for(int i=0; i<30;i++)
{
list.add(new MyObject());
}

答案 3 :(得分:2)

你可以做什么(虽然这也没有多大意义),是使用地图而不是列表

Map<String, MyObject> map = new HashMap<String, MyObject>();

for (int i = 0; i < 10; i++) {
    map.put("o" + i, new MyObject());
}

答案 4 :(得分:1)

您的对象没有名称。 变量 o1有一个名称,但它没有链接到对象,只是变量引用了对象。列表中的对象不知道变量o1已被引用。

对于你正在做的事情,你根本不需要变量,正如斯蒂芬在他的回答中所说,你可以直接添加对象:

for (int i=0; i<30;i++)
{
    list.add(new MyObject());
}

答案 5 :(得分:-1)

创建对象为其命名,添加构造函数。 然后将对象名称添加到arraylist。