我要做的是将一个数组添加到一个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];
但它不起作用,我迷失了......
感谢您与我打交道!
答案 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的数组。