Java 8无法访问嵌套列表元素的值

java arraylist netbeans integer

1358 观看

3回复

560 作者的声誉

首先,我很容易将其与常规的从数组填充和访问数据的方式一起使用,因此建议的解决方案不是我想要的。我试图更好地了解如何从多维数组填充和访问数据。当我运行该程序的NetBeans的错误消息是:cannot find symbolsymbol: method get(int)location: class Integer。我已经看过这个.get()方法ArrayList,对我来说似乎我正在正确地尝试访问该数据,但是有些不正确。另外,在程序代码的最后一条语句中,NetBeans说incompatible types: ArrayList<Integer> cannot be converted to Object[]。我猜这是因为当我尝试打印每个嵌套元素的值时,每个值都想作为进行访问String,这只是一个猜测。

因此,我要填充的数组应如下所示:[[1, 2, 3, 4], [5, 6, 7, 8], [9, 10, 11, 12]]和输出应如下所示。

1 2 3 4 5 6 7 8 9 10 11 12

// TwoDimensionalArray_v2.java
// demonstrates populating and accessing elements from a two-dimensional array

package twodimensionalarray_v2;

import java.util.*;

public class TwoDimensionalArray_v2 {
  public static void main(String args[]) {
    // declare a dynamic array of class type Integer
    ArrayList<Integer> table = new ArrayList<>();

    // loop variables
    int i, j;

    // populate the array one nested element at a time
    for (i = 0; i < 3; ++i) {
      for (j = 0; j < 4; ++j) {
        table.set(i, (i * 4) + j + 1);
        // >>>>> NetBeans error message is for the below line on .get(j) <<<<<
        System.out.print(table.get(i).get(j) + " ");
      }
      System.out.println();
    }

    // print 'table'
    System.out.println();
    System.out.println(Arrays.deepToString(table));
  }
}
作者: Michael Swartz 的来源 发布者: 2017 年 9 月 15 日

回应 3


-2

92 作者的声誉

是的 抱歉。您不能访问get(j),因为列表只是一个列表(一维)。您应该使用原始的Array [] []

作者: nineunderground 发布者: 2017 年 9 月 15 日

2

28800 作者的声誉

决定

列表是一维结构,但是您可以将任何聚合用于元素。另一个List作为元素会产生一个二维数组。

List<List<Integer>> table = new ArrayList<>();

// populate the array one nested element at a time
for (int i = 0; i < 3; ++i) {
  List<Integer> row;
  table.add( row = new ArrayList<Integer>() );
  for (int j = 0; j < 4; ++j) {
    row.add( (i * 4) + j + 1);
  }
}

for (int i = 0; i < table.size(); ++i) {
  for (int j = 0; j < table.get(i).size(); ++j) {
    System.out.print( " " + table.get(i).get(j));
  }
  System.out.println();
}

您可以使用适当的数组执行相同的操作。

作者: laune 发布者: 2017 年 9 月 15 日

0

1617 作者的声誉

你的表是Arraylist

table.get(i)

将为您提供在颗粒位置设置的整数值,因为您要在行的数组中设置整数:

   table.set(i, (i * 4) + j + 1);

所以get(i)仅给您整数值,而不是数组或列表

作者: K M PATEL 发布者: 2017 年 9 月 15 日
32x32