如何找到Java中二维列表的元素?
我有一个函数,其参数为List<List<Integer>>
,并且我想知道如何查找此列表的行和列。
答案 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));
}