如何使用流初始化2d ArrayList

时间:2019-06-18 19:59:27

标签: java arraylist multidimensional-array initialization

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

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

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

1 个答案:

答案 0 :(得分:1)

在您给出的示例中,Person::new用于生成列表的元素,但是此生成器可以是您喜欢的任何lambda,所以类似这样的事情:

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