如何用流初始化 2d ArrayList

How to initialise 2d ArrayList with streams

我有像这样的 2D ArrayListArrayList<ArrayList<SingleCell>> grid;。 我想像本例中那样用普通的 ArrayList:

初始化它
List<Person> persons = Stream.generate(Person::new)
                             .limit(60)
                             .collect(Collectors.toList());

我在构造 holder 时获取宽度和高度 class。我想根据传递的大小用 new SingleCell(); 填充 2D ArrayList。 是否可以这样做,如果可能的话我该怎么做?还有什么更好的方法吗?

在您给出的示例中,Person::new 用于生成列表的元素,但此生成器可以是您喜欢的任何 lambda,那么像这样的东西怎么样:

List<List<SingleCell>> grid =
    Stream.generate(()->
        Stream.generate(SingleCell::new)
        .limit(width)
        .collect(Collectors.toList())
    )
    .limit(height)
    .collect(Collectors.toList());