首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >是否创建具有相同值/对象的n个副本的数组?

是否创建具有相同值/对象的n个副本的数组?
EN

Stack Overflow用户
提问于 2013-01-11 18:46:20
回答 7查看 19.8K关注 0票数 27

我想创建一个大小为n的数组,数组中的每个索引都有相同的值。在Java中做这件事的最好方法是什么?

例如,如果n为5,值为布尔型false,则数组应为:

代码语言:javascript
运行
复制
= [false, false, false, false, false]
EN

回答 7

Stack Overflow用户

回答已采纳

发布于 2013-01-11 18:48:17

您可以使用以下命令进行尝试:

代码语言:javascript
运行
复制
boolean[] array = new boolean[5];
Arrays.fill(array, false);

使用手动数组填充的第二种方法:

代码语言:javascript
运行
复制
boolean[] array = new boolean[] {false, false, false, false, false};
票数 31
EN

Stack Overflow用户

发布于 2015-01-13 19:13:51

代码语言:javascript
运行
复制
List<Integer> copies = Collections.nCopies(copiesCount, value);

javadoc here

这比'Arrays.fill‘解决方案更好的原因有几个:

  1. 它很好很流畅,
  2. 它消耗更少的内存(参见source code),这对于复制大量的副本或巨大的对象是很重要的,
  3. 它创建一个不可变的列表,
  4. 它可以创建一个非原语类型的对象的副本列表。但是应该谨慎使用,因为元素本身不会被复制,get()方法将为每个索引返回相同的值。最好是提供一个不可变的对象进行复制,或者确保它不会被更改。

列表比数组更酷:)但是如果你真的-真的-真的想要一个数组,那么你可以这样做:

代码语言:javascript
运行
复制
Integer[] copies = Collections.nCopies(copiesCount, value)
                              .toArray(new Integer[copiesCount]);
票数 29
EN

Stack Overflow用户

发布于 2013-01-11 18:48:16

Arrays.fill()将用相同的值填充现有数组。原语和Objects有不同的变体。

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14276470

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档