Java 如何填写列表?

Java 如何填写列表?,java,arraylist,Java,Arraylist,我创建了一个列表,如下所示: List<List> tmp = new ArrayList<List>(2); 但是,我得到以下错误: 线程“main”java.lang.IndexOutOfBoundsException中出现异常:索引:0,大小:0 位于java.util.ArrayList.rangeCheck(ArrayList.java:653) 获取(ArrayList.java:429) 错误的来源是什么?如何克服它?您尚未初始化内部列表。这就是你出错的原

我创建了一个列表,如下所示:

List<List> tmp = new ArrayList<List>(2);
但是,我得到以下错误:

线程“main”java.lang.IndexOutOfBoundsException中出现异常:索引:0,大小:0 位于java.util.ArrayList.rangeCheck(ArrayList.java:653) 获取(ArrayList.java:429)


错误的来源是什么?如何克服它?

您尚未初始化内部列表。这就是你出错的原因

下面的代码将初始化每个内部列表

int initialCapacity=2;
List<List> tmp = new ArrayList<List>(initialCapacity);
for(int i = 0; i < initialCapacity; i++)
     tmp.add(new ArrayList());
int initialCapacity=2;
列表tmp=新阵列列表(初始容量);
对于(int i=0;i
您尚未初始化内部列表。这就是你出错的原因

下面的代码将初始化每个内部列表

int initialCapacity=2;
List<List> tmp = new ArrayList<List>(initialCapacity);
for(int i = 0; i < initialCapacity; i++)
     tmp.add(new ArrayList());
int initialCapacity=2;
列表tmp=新阵列列表(初始容量);
对于(int i=0;i
您创建了一个初始容量为
2
的空列表(即,在向列表中添加2个元素并添加第三个元素之前,不会调整列表的内部表示形式的大小)


然后尝试从空列表中获取第一个元素。这当然行不通。您需要首先添加()尽可能多的内部列表(大概2个),然后填充这些内部列表。

您已经创建了一个初始容量为
2
的空列表(即,在向列表中添加2个元素并添加第三个元素之前,列表的内部表示形式不会调整大小)



然后尝试从空列表中获取第一个元素。这当然行不通。您需要先添加()尽可能多的内部列表(大概2个),然后填充这些内部列表。

您还没有向列表中添加任何内容。声明初始容量为2的任何类型的列表不会自动填充该列表。您必须先这样做。

您还没有在列表中添加任何内容。声明初始容量为2的任何类型的列表不会自动填充该列表。你必须先这样做。

“我创建了一个列表,就像这样”你实际上没有创建列表,只是一个列表。
tmp.size()
…@takendarkk-从语义上说,他们创建了一个列表,它只是碰巧当前的长度为0。是的,我想这取决于你如何看待它。我认为这只是一个列表——一旦某个东西在里面,那么它就是某个东西的列表;DR-您调用的构造函数创建一个初始容量为2项的空列表。为了避免错误,请在外部列表中添加一些列表。“我创建了一个列表,就像这样”您实际上并没有创建列表列表,只是一个列表。
tmp.size()
…@takendarkk-从语义上讲,他们创建了一个列表列表,它只是碰巧当前的长度为0。是的,我想这取决于您如何看待它。我认为这只是一个列表——一旦某个东西在里面,那么它就是某个东西的列表;DR-您调用的构造函数创建一个初始容量为2项的空列表。为避免此错误,请将一些列表添加到外部列表。该列表没有大小2-其初始容量为2。初始大小为零。列表没有大小2-初始容量为2。初始大小为零。for循环不会解析任何内容,因为它会迭代(或者更确切地说不会迭代)空列表。是的,您仍然需要调用外部列表上的
set()
或类似的函数来实际放入内容。更新了答案。并且。。。它仍然不起作用,因为size()最初是零。@而且我想如果我硬编码大小,它会起作用,例如nSize=2,然后执行此迭代。for循环不会解决任何问题,因为它迭代(或者说不迭代)空列表。是的,您仍然必须调用
set()
或外部列表中的类似内容,以实际将某些内容放入其中。更新了答案。并且。。。它仍然不起作用,因为size()最初是零。@我想如果我硬编码大小,它会起作用,例如nSize=2,然后进行这个迭代。我明白了。谢谢你的回答,我明白了。谢谢你的回答。