在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循环,最好不要求助于外部库?
如果您使用的是Java 8,则可以使用它的流:
Stream.generate(ArrayList<Integer>::new)
.limit(10).collect(Collectors.toList());
Run Code Online (Sandbox Code Playgroud)
该Stream.generate()方法采用Supplier知道如何生成值并生成这些值的无限流的方法(每个值都是通过再次调用供应商获得的,因此它们都是不同的,不像Collections.nCopies()).放置limit()在流上,然后将结果收集到列表中,从而生成不同条目的列表.