在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>()))
然而,这是not与其他示例等效,因为列出了别名。
有没有一种方法可以创建不同对象克隆的数组,而不使用 for 循环,并且最好不求助于外部库?
如果您使用 Java 8,您可以使用它的流:
Stream.generate(ArrayList<Integer>::new)
.limit(10).collect(Collectors.toList());
The Stream.generate()方法需要一个Supplier它知道如何产生一个值并生成这些值的无限流(每个值都是通过再次调用供应商获得的,因此它们都是不同的,不像Collections.nCopies()
)。放置一个limit()
流上,然后将结果收集到列表中,从而产生不同条目的列表。
请注意,从 Java 16 开始Stream
has a toList()
方法,这样可以变得更干净一点:
Stream.generate(ArrayList<Integer>::new).limit(10).toList();
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)