Java ArrayListIndexOutOfBoundsException

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<

我在ArrayList中使用ArrayList来创建一个总共10个插槽的组,并将其划分为另外10个插槽,每个插槽存储整数

我的代码:-


你能指出我做错了什么吗?

你要做的是首先在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);
            }
        }
    }
}