如何在Java中获取2-D列表的元素?例如,List <List <Integer >>

时间:2019-06-19 22:06:14

标签: java nested-lists

如何找到Java中二维列表的元素?

我有一个函数,其参数为List<List<Integer>>,并且我想知道如何查找此列表的行和列。

4 个答案:

答案 0 :(得分:2)

如果你喜欢

List<List<Integer>> obj

然后您可以像

一样访问
obj.get(current_row).get(current_column);

答案 1 :(得分:1)

您已请求帮助从List<List<Integer>>参数获取“行”和“列”。

得到“行”,非常简单:

List<List<Integer>> table;
for (List<Integer> row : table) {
    // do something with 'row'
}

虽然列并不简单:

List<List<Integer>> table; // assumed to not be empty
int columnCount = table.get(0).size();
for (int columnNumber = 0; i < columnCount; columnNumber++) {
    List<Integer> column = new ArrayList<>();
    for (List<Integer> row : table) {
        column.add(row.get(columnNumber));
    }
    // do something with 'column'
}

要节省对列数据每次访问的重新处理,可以将列存储在List<List<Integer>>变量中,然后类似于访问行来访问这些列。

答案 2 :(得分:0)

列表api定义一个api get

List<List<Integer>> listOfLists;
// get, then get again
Integer integer = listOfLists.get(row).get(column);

链中的第一个“ get”返回一个List<Interger>,因此您再次获得了整数

答案 3 :(得分:0)

就像拥有int[][]一样,只是需要使用列表的检索方法。

最简单的方法是利用列表实现Iterable接口的事实。

所以你可以

      //  create some data

      List<List<Integer>> listofLists = new ArrayList<>();
      for (int i = 0; i < 4; i++) {
         listofLists.add(Arrays.asList(1 * i, 2 * i, 3 * i));
      }

显示

      for (List<Integer> list : listofLists) {
         System.out.println(list); // prints out each row.
      }

假设您要将其转换为插入所有单个元素的int[][]数组。


      int[][] ints = new int[listofLists.size()][];

      for (int i = 0; i < listofLists.size(); i++) {
         // get each list in succession
         List<Integer> list = listofLists.get(i);
         // allocate the columns array to the size
         ints[i] = new int[list.size()];
         // copy each item over individually
         for (int k = 0; k < list.size(); k++) {
            ints[i][k] = list.get(k);
         }
      }

      // print the arrays
      for (int[] i : ints) {
         System.out.println(Arrays.toString(i));
      }