Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/313.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 通过for循环添加具有不同名称的对象_Java - Fatal编程技术网

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

Java 通过for循环添加具有不同名称的对象,java,Java,执行以下操作的最佳方法是什么: List<MyObject> list = new LinkedList<MyObject>(); for(int i=0; i<30;i++) { MyObject o1 = new MyObject(); list.add(o1); } List List=newlinkedlist(); 对于(int i=0;i您不需要为每个对象使用不同的名称。由于o1对象是在for循环中声明的,因此o1变量的作用域仅限于for循环

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

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

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

对于(int i=0;i您不需要为每个对象使用不同的名称。由于o1对象是在for循环中声明的,因此o1变量的作用域仅限于for循环,并在每次迭代期间重新创建它……但每次它都会引用在该迭代期间创建的新对象。请注意,该变量本身不会被存储在列表中,只有它所引用的对象

如果除了将新对象添加到列表中之外,不需要对其执行任何其他操作,则可以执行以下操作:

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

for(int i=0;i您的对象没有名称。变量
o1
有名称,但除了变量引用对象外,它没有链接到对象。列表中的对象不知道曾经被变量
o1
引用过

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

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

for(inti=0;i在循环的上下文中,您不必担心为创建的每个新实例命名

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

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

for(int i=0;i为什么要给它们不同的名称?您正在for循环内部创建对象,因此它不存在于外部,因此我认为没有理由给它们不同的名称

回答你的问题:我看到的唯一方法,但我可能错了,就是制作一个MyObject数组并执行以下操作:

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]);
}
List List=newlinkedlist();
MyObject[]o=新的MyObject[30];
对于(int i=0;i<30;i++){
o[i]=新的MyObject();
增加(o[i]);
}
你能做的就是使用地图而不是列表(尽管这也没有多大意义)

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

for (int i = 0; i < 10; i++) {
    map.put("o" + i, new MyObject());
}
Map Map=newhashmap();
对于(int i=0;i<10;i++){
map.put(“o”+i,新的MyObject());
}

创建对象给它一个名称,添加构造函数。
然后将对象名称添加到arraylist。

对不起,名称是什么意思?编译器会删除局部变量的名称。这里的大问题是为什么?在这种情况下,变量的名称在经过forloop之后(甚至在forloop的下一次迭代中)将不会继续存在在任何情况下。它的名称有多重要/为什么重要?为什么在循环中你需要让对象的变量名不同?你给出的例子中的变量名是不相关的…如果你想访问10个变量名,你必须写10行,你不能使用循环。其他人之前已经暗示过,但我想澄清一下:对象没有ve名称!仅仅因为您引用了一个具有给定名称的变量中的对象,并不意味着该对象具有该名称。@Younes:我不明白为什么没有。@Stephen:Re“…o1对象是在循环中声明的,它的(原文如此)作用域仅限于for循环…”这在一个重要的方面有点不正确。变量
o1
的作用域是循环;如果对对象的引用存在于循环之外,则对象的作用域不是循环(在本例中,它位于列表上).这就是我的答案,但是说对象不存在于循环之外是错误的,只是变量在循环之外无效。对象仍然(引用)在列表中。