二维集合List<List<Object>>
同数组一样,集合也有二维的,其实这样说不准确。以List<List<Integer>>为例,外层List集合中的元素类型是List<Integer>、内层List集合中元素类型是Integer。
1.二维集合的初始化
方式一: List<List<Integer>> list = new ArrayList<>();//创建一个二维顺序表 方式二: List<List<Integer>> list = new ArrayList<>(List<Integer>);//创建一个二维顺序表
2.二维集合添加数据
list.add(new ArrayList<>());//这里创建一个ArrayList就相当于创建一层 list.get(0).add(1);//在第一层第一个位置添加元素 list.get(0).add(12); list.add(new ArrayList<>()); list.get(1).add(21); list.get(1).add(11);
3.二维集合的遍历
方式一: for (int i = 0; i < list.size(); i++) { List<Integer> ietm = list.get(i); for (int j = 0; j < ietm.size(); j++) { System.out.print(ietm.get(j)+" "); } System.out.println(); } 方式二: for (int i = 0; i < list.size(); i++) { System.out.println(Arrays.toString(list.get(i).toArray())); }
讲解一个例题
class Solution { public List<List<Integer>> shiftGrid(int[][] grid, int k) { //将二维数组转换成一维数组 int m = grid.length; int n = grid[0].length; int l = 0; int[] array = new int[m*n]; for (int i = 0; i < m; i++) { for (int j = 0; j < n; j++) { array[l++] = grid[i][j]; } } while(k-->0){//找到一维数组中的最后一个元素 int temp = array[array.length-1]; for (int i = array.length-1; i >0; i--) { array[i] = array[i-1]; } array[0] = temp; } l = 0; List<List<Integer>> ret = new ArrayList<>(); for (int i = 0; i < m; i++) { ArrayList<Integer> list = new ArrayList<>(); for (int j = 0; j < n; j++) { list.add(array[l++]); } ret.add(list); } return ret; } } public class Test { public static void main(String[] args) { Solution solution = new Solution(); int[][] src = new int[][]{ {1, 2, 3}, {4, 5, 6}, {7, 8, 9}}; List<List<Integer>> out = solution.shiftGrid(src, 1); for (int i = 0; i < out.size(); i++) { System.out.println(Arrays.toString(out.get(i).toArray())); } } }
结果