gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-01 16:21:30 25 4
gpt4 key购买 nike

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

我想要这样的等价物:

  • foo = vector<vector<int> >(10); c++,创建 10 个不同的空 vector
  • [ [] 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() ,然后将结果收集到列表中,从而生成不同条目的列表。

请注意,从 Java 16 Stream 开始,有一个 toList() 方法,因此这可以变得更简洁:

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

关于java - 使用对象的 n 个克隆创建 java 集合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62261278/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com