Java 向ArrayList添加数组

Java 向ArrayList添加数组,java,arrays,arraylist,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添加一个数组。我看了其他一些例子,它们告诉我要做我正在做的事情,但是当我运行这个程序时,我得到了无意义的输出。我还想访问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);
    }
不需要太多的解释,但我声明了数组和arraylist,将它们传递给一个函数,该函数不断为数组的元素提供不同的值,然后,假定在每次迭代中将数组本身添加到arraylist中

输出,虽然,它没有什么像我所寻找的。我可以做另一个循环来打印数组列表中每个点的每个数组元素,但我不知道怎么做。我想

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

但它不起作用,我迷路了


谢谢你和我打交道

只是打印阵列的方式有问题。请尝试以下方法:

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

数组没有实现它自己使用的
toString()
实现,这就是为什么您要查看该输出

getClass().getName() + '@' + Integer.toHexString(hashCode())
[I
意味着这是一个整数数组加上它的hashcode
e1cba87

解决这个问题的一个方法是使用

例如:

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));
       }
}
publicstaticvoidmain(字符串[]args){
int[]人=新int[4];
List personID=new ArrayList();
实验(拟人,人);
//现在打印
for(int[]数组:personID){
System.out.println(array.toString(array));
}
}

您不仅试图通过隐式调用
toString
来打印数组,还将同一数组反复添加到列表中。名为
person
的变量是对数组对象的引用。您不断更改其元素并添加同一引用


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

现在它告诉我,它无法将ArrayList转换为_[]这里的空白是你想要的任何变量类型。@ USSR3353676,这是因为你没有指定数组列表元素的类型。在<代码>实验< /代码>声明<代码>人名参数如下:<代码> ARAYLIST PIDID哦,GooCha.谢谢!!]所以,我将如何调用这些ARA中的一个特定元素?ys?我想它应该类似于
personID.get(I[0]);
?要获得一个特定的元素,可以这样做:
personID.get(0)[0]
那么,你的意思是这样的?
System.out.println(array.toString(personID));
它告诉我它无法将ArrayList转换为任何数组。@user3453876
personID
不是。
Arrays.toString()
很明显,你必须通过
person
@user3453876我编辑并在你的代码中添加一个示例,尝试使用
泛型
通过在编译时检测到更多的bug来增加代码的稳定性,这非常有效。:D显然,我必须查看列表。那么,挑选一个特定的其中一个数组?@user3453876只是数组[0]或数组[1]…数组[n-1]这很好。这只是为了让我理解如何将这个想法应用到其他东西中。因此,重复的四个10对我来说没有多大关系。此外,我的理解是元素ArrayList不会引用回数组,而是复制它们的值,因此更改数组的元素除了更改不需要的内容外,什么都不会做ArrayList的下一个元素将包含在其中。我收回这一点,它似乎只是保存对数组的引用,而不是值。嗯。。。
getClass().getName() + '@' + Integer.toHexString(hashCode())
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));
       }
}