0

我试图找出这个简单的代码有什么问题,我试图在这个网站上搜索示例但找不到它。我想创建数组列表。因此,当我调用 myList.get(0) 时,它将输出第一个 array1。如果 myList.get(0)[0] 是第一个值。谢谢我的代码:

List<int[]> myList = new ArrayList<int[]>();
    int[] array1 =  {15, 20, 40};
    int[] array2 =  {30, 7, 18};

    myList.add(array1);
    myList.add(array2);
    System.out.println(myList);

给出这种输出。[[我@129f3b5,[我@13f3045]

4

8 回答 8

5

你必须做这样的事情,导入java.util.Arrays并使用这个静态方法Arrays#toString(int[])

for(int[] a : myList) {
   System.out.println(Arrays.toString(a));
}
于 2013-10-30T13:31:57.937 回答
2

在您的示例myList.get(0)中,将返回一个整数数组,因为这就是您的列表包含的内容。

因此,如果您想打印数组的所有元素,您应该执行类似的操作

for (int[] array : myList) {
    for (Integer i : array) {
        System.out.println(i);
    }
}
于 2013-10-30T13:31:43.263 回答
1

你应该这样打印:

for(int i = 0; i < myList.size(); i++) {
    int[] numbers = myList.get(i);
    System.out.println(Arrays.toString(numbers));
}

Array 是 Object,如您所知,每个对象都有toString方法。默认toString显示类名表示,然后添加@,然后是哈希码。

于 2013-10-30T13:27:42.683 回答
1

不幸的是,Java 数组没有一个好的toString()方法可以返回其包含的元素的格式良好的视图。并且System.out.println(Object)实际上调用了这个糟糕的toString()方法,它只是返回数组的类型 ( [[I),后跟它的哈希码。

要获得有意义的数组表示,请使用java.util.Arrays.toString()

for (int[] array : myList) {
    System.out.println(Arrays.toString(array);
}
于 2013-10-30T13:32:16.860 回答
1

这将首先在新行上打印出每个值,现在您应该自己编辑输出。第二个循环将使用 Arrays.toString() 打印出每个表

public static void main(String[] args) {
    List<int[]> myList = new ArrayList<int[]>();
    int[] array1 = { 15, 20, 40 };
    int[] array2 = { 30, 7, 18 };

    myList.add(array1);
    myList.add(array2);
    for (int[] tables : myList)
        for (int i : tables)
            System.out.println(i);
    //This is also possible
    for (int[] tables : myList)
        System.out.println(Arrays.toString(tables));

}
于 2013-10-30T13:33:23.990 回答
0

我@129f3b5

我@13f3045

是数组的默认toString()实现。

所以代码是完全正确的,数组存储在列表中。只是toString()对数组没有多大用处。

简单地说 - 你不应该依赖 array toString()

于 2013-10-30T13:30:43.557 回答
0

您可以使用Arrays.toString() 打印数组。;

System.out.printlin(myList.get(0)) // first Array from the list
System.out.printlin(myList.get(1)) // second Array from the list

使用下面的代码打印整个列表。

   for(int[] array : myList) {
          System.out.println(Arrays.toString(array));
   }
于 2013-10-30T13:32:54.830 回答
0

代码是正确的。但是,您必须记住,您不能简单地打印数组,而必须执行类似的操作 System.out.println(Arrays.toString(myList));

于 2013-10-30T13:33:29.397 回答