在2D数组列表中插入元素

时间:2014-04-28 13:53:30

标签: java arrays arraylist

我正在尝试在ArrayList中插入元素。 这些元素没有被添加,我找不到原因。

这就是我所拥有的:

t [0] [0] =>帐户

t [0] [1] =>平衡

class Banking4
    {

    int i=0;
    ArrayList[][] t = new ArrayList[2][10];
    Scanner sc=new Scanner(System.in);

    void addAccount() {
     for(int i=0;i<t.length;i++)
     {
       if(t[i][0]==null)
       {
        System.out.println("Enter the account no:");
        int a=sc.nextInt();
        t[0][0] = new ArrayList();
        t[0][0].add(a);
        t[0][1] = new ArrayList();
        t[0][1].add(0);
        System.out.println("Account number is:"+a +"Current balance is:"+t[0][1]);
        break;
       }
     }
    }
    }

3 个答案:

答案 0 :(得分:0)

ArrayList不是数组类型。而不是将它视为一个你需要制作嵌套的ArrayList。

// create
ArrayList<ArrayList<FooBar>> list=new ArrayList<ArrayList<FooBar>>();
// add to first layer
list.set(index, new ArrayList<FooBar>());
// add to second layer
list.get(index1).set(index2, new FooBar());
// etc

所以基本上为了访问第二层arraylists你需要在第一个列表中使用get()。

答案 1 :(得分:0)

您只是添加/更新2D arraylist数组的第0行,您需要更改:

    t[0][0] = new ArrayList();
    t[0][0].add(a);
    t[0][1] = new ArrayList();
    t[0][1].add(0);

    t[i][0] = new ArrayList();
    t[i][0].add(a);
    t[i][1] = new ArrayList();
    t[i][1].add(0);

你没有以正确的方式做到这一点。你应该把它保存为ArrayList的ArrayList。

希望这有帮助

答案 2 :(得分:0)

您正在使用ArrayLists的二维数组(实际上是一个3D数组) - 而不是2D ArrayList。项目t [0] [0](或t [0] [1])是一个ArrayList本身,这就是你得到意想不到的结果的原因。

如果要使用ArrayList创建2D数组,请按以下方式使用它:

ArrayList<ArrayList<Integer>> t = new ArrayList<ArrayList<Integer>>(20);
t.get(0) = new ArrayList<Integer();
t.get(0).add(a);    

这将创建一个ArrayLists of Integers的ArrayList,您可以使用get(int index)方法访问它。

如果您的阵列大小固定,我建议您使用带有[]表示法的本机Java数组:

int[][] t = new int[2][10];
t[0][0] = a;
t[0][1] = 0;
System.out.println("Account number is:"+t[0][0] +". Current balance is:"+t[0][1]);