将数组添加到ArrayList

时间:2014-03-24 03:23:20

标签: java arrays arraylist

我要做的是将一个数组添加到一个arraylist。我看过其他一些告诉我要做我正在做的事情的例子,但是当我运行程序时,我得到了无意义的输出。我还想在arraylist中访问数组的某些元素,我不知道该怎么做。

static int elements = 10;  //Or whatever number you'd like

public static void main(String[] args)
    {
        int[] person = new int[4];
        ArrayList personID = new ArrayList();

        experiment(personID, person);
    }

private static void experiment(ArrayList personID, int[] person)
    {
        for(int i = 0; i < elements; i++)
            {
                person[0] = i;
                person[1] = i;
                person[2] = i;
                person[3] = i;

                personID.add(person);
            }
        System.out.print(personID);
    }

输出:

[[I@e1cba87, [I@e1cba87, [I@e1cba87, [I@e1cba87, [I@e1cba87, [I@e1cba87, [I@e1cba87, [I@e1cba87, [I@e1cba87, [I@e1cba87]

不需要那么多的解释,但是我声明了数组和arraylist,将它们传递给一个函数,该函数不断给出数组的元素不同的值,然后,据推测,每次迭代都将数组本身添加到arraylist中。 / p>

但是输出结果与我正在寻找的完全不同。我可以做另一个循环来打印数组列表中每个点的每个数组元素,但我不知道该怎么做。我想了

System.out.print(personID.get(i[0]);

或者

System.out.print(personID.get(i)[0];

但它不起作用,我迷失了......

感谢您与我打交道!

3 个答案:

答案 0 :(得分:1)

打印阵列的方式只是一个问题。试试这个:

for (int[] a : personID)
    System.out.println(Arrays.toString(a));

答案 1 :(得分:0)

Arrays没有实现自己使用Object#toString()toString()实现,这就是你正在观看输出的原因

getClass().getName() + '@' + Integer.toHexString(hashCode())

[I表示这是一个加上@的整数数组,后跟其哈希码e1cba87

解决问题的一种方法是使用Arrays.toString()

例如:

public static void main(String[] args){
        int[] person = new int[4];
        List<int[]> personID = new ArrayList<>();
        experiment(personID, person);


       //now print
       for(int[] array : personID){
          System.out.println(Arrays.toString(array));
       }
}

答案 2 :(得分:0)

您不仅通过隐式调用toString来尝试打印数组,而且还一遍又一遍地向列表中添加相同的数组。名为person的变量是对数组对象的引用。您不断更改其元素并添加相同的参考。

如果您的打印例程正确,输出将仅显示重复10次的四个10的数组。