复制列表<列表<整数>,但有大小限制

时间:2019-11-21 04:36:50

标签: java collections

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;
}

我使用此方法来复制列表列表。有更好的方法吗?

1 个答案:

答案 0 :(得分:4)

您可以将streamlimit一起使用

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());