执行以下操作的最佳方法是:
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
,我想将每个添加到列表中。这样做的最佳方式是什么?
答案 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。