使用对象的n个克隆创建java集合

Sjl*_*ver 4 java collections

在Java中,是否有一种单行方式来创建一个用对象的n个克隆初始化的集合?

我想要相当于这个:

  • foo = vector<vector<int> >(10); c ++,创建10个不同的空向量
  • [ [] for i in range(10) ] Python,一个由10个不同的空数组组成的数组
  • Array.new(10) { [] } Ruby,与Python相同

在Java中,我只找到了

new ArrayList<ArrayList<Integer> >(Collections.nCopies(10, new ArrayList<Integer>()))
Run Code Online (Sandbox Code Playgroud)

然而,这并不等同于其他的例子,因为名单别名.

有没有办法创建一个不同的对象克隆数组,而不使用for循环,最好不要求助于外部库

Dav*_*rad 7

如果您使用的是Java 8,则可以使用它的流:

Stream.generate(ArrayList<Integer>::new)
    .limit(10).collect(Collectors.toList());
Run Code Online (Sandbox Code Playgroud)

Stream.generate()方法采用Supplier知道如何生成值并生成这些值的无限流的方法(每个值都是通过再次调用供应商获得的,因此它们都是不同的,不像Collections.nCopies()).放置limit()在流上,然后将结果收集到列表中,从而生成不同条目的列表.