private static List<List<Integer>> copy(List<List<Integer>> grid, int rows, int columns) {
List<List<Integer> > newGrid = new ArrayList<List<Integer>>();
for(int i = 0; i < rows; i++) {
newGrid.add(new ArrayList<Integer>());
for(int j = 0; j< columns; j++) {
newGrid.get(i).add(grid.get(i).get(j));
}
}
return newGrid;
}
我使用此方法来复制列表列表。有更好的方法吗?
答案 0 :(得分:4)
List<List<Integer>> res = grid.stream()
.map(l->l.stream().limit(columns).collect(Collectors.toList())
.limit(rows)
.collect(Collectors.toList());
或者您也可以使用subList
此列表支持返回的列表,因此返回列表中的非结构性更改会反映在此列表中,反之亦然
List<List<Integer>> res = grid.stream()
.map(l->l.subList(0, columns))
.limit(rows)
.collect(Collectors.toList());