Java ArrayListIndexOutOfBoundsException
我在ArrayList中使用ArrayList来创建一个总共10个插槽的组,并将其划分为另外10个插槽,每个插槽存储整数 我的代码:-Java ArrayListIndexOutOfBoundsException,java,arraylist,Java,Arraylist,我在ArrayList中使用ArrayList来创建一个总共10个插槽的组,并将其划分为另外10个插槽,每个插槽存储整数 我的代码:- 你能指出我做错了什么吗?你要做的是首先在a中添加一些东西,因为你总是在外部列表中读取I值,我们在外部循环中添加一个新的数组列表 import java.util.ArrayList; public class abc { public static void main(String[] args) { ArrayList<
你能指出我做错了什么吗?你要做的是首先在a中添加一些东西,因为你总是在外部列表中读取I值,我们在外部循环中添加一个新的数组列表
import java.util.ArrayList;
public class abc
{
public static void main(String[] args)
{
ArrayList<ArrayList<Integer>> a = new ArrayList<ArrayList<Integer>>();
for(int i=0;i<10;i++) {
a.add(new ArrayList<Integer>);
for(int j=0;j<10;j++)
{
(a.get(i)).add(j,j);
}
}
}
}
必须先将元素添加到数组中,然后才能访问:
public static void main(String[] args)
{
ArrayList<ArrayList<Integer>> a = new ArrayList<ArrayList<Integer>>();
for(int i=0;i<10;i++)
{
a.add(new ArrayList<Integer>());
for(int j=0;j<10;j++)
{
(a.get(i)).add(j,j);
}
}
}
您第一次尝试访问的元素是一个不存在的.geti。一个可以说更优雅的解决方案不需要get和两个参数add:
这将使您的代码正常工作:
ArrayList<ArrayList<Integer>> a = new ArrayList<ArrayList<Integer>>();
for(int i=0;i<10;i++)
{
a.add(new ArrayList<Integer>()); //Add this line
for(int j=0;j<10;j++)
a.get(i).add(j); //You should only add 1 integer value
}
附加语句的原因:您有一个arrayList类型的arrayList。由于外部arrayList为空,在向内部arrayList添加整数值之前,需要先添加arrayList。此方法无需get调用
A.GETI失败,因为你从来没有添加任何东西。列表中的列表已经很难很难理解了,所以你可能也想考虑在你的环中修复缩进,尽管它的名字,ARAYLIST类的行为不象数组;它的名字是根据它的实现方式选择的。它实现列表接口,并以零大小开始,而不考虑其初始容量。所以你需要先把项目添加到列表中,然后才能访问它们。虽然我同意,但我仍然不明白为什么addj,j可以工作。它不是在整数数组列表中吗?@McAdam331如果你读了,你会看到它会在那个索引中添加它。@brso05那么它会有什么值呢?为什么不应该是addj?谢谢你。我不知道你可以添加这样的索引,谢谢@不客气。也可能是addj,但这是他们想要实现的。
public static void main(String[] args)
{
ArrayList<ArrayList<Integer>> a = new ArrayList<ArrayList<Integer>>();
for(int i=0;i<10;i++)
{
a.add(new ArrayList<Integer>());
for(int j=0;j<10;j++)
{
(a.get(i)).add(j,j);
}
}
}
public class abc
{
public static void main(String[] args)
{
ArrayList<ArrayList<Integer>> a = new ArrayList<ArrayList<Integer>>();
for(int i=0;i<10;i++)
{
ArrayList<Integer> inner = new ArrayList<Integer>();
a.add(inner);
for(int j=0;j<10;j++)
{
inner.add(j);
}
}
}
}
ArrayList<ArrayList<Integer>> a = new ArrayList<ArrayList<Integer>>();
for(int i=0;i<10;i++)
{
a.add(new ArrayList<Integer>()); //Add this line
for(int j=0;j<10;j++)
a.get(i).add(j); //You should only add 1 integer value
}
import java.util.ArrayList;
public class Main
{
public static void main(String[] args)
{
ArrayList<ArrayList<Integer>> a = new ArrayList<ArrayList<Integer>>();
for(int i = 0;i < 10; ++i)
{
ArrayList<Integer> b = new ArrayList<Integer>();
a.add(b);
for(int j = 0; j < 10; ++j)
{
b.add(j);
}
}
}
}