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

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

但是,这与其他示例不同,因为列表别名.

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

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

Stream.generate(ArrayList<Integer>::new)
    .limit(10).collect(Collectors.toList());

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

相关文章
相关标签/搜索