java - 在 JAVA 中创建具有所有相同值的 List<Integer>

标签 java arrays

我正在尝试创建一个长度为 500 的列表,所有索引都初始化为 1000。然后,我想将其中一些索引设置为新值。我尝试了两种方法,但出现问题和/或错误:

第一:

int a = 3;
int b = 0;
List<Integer> list = new ArrayList();
for (int i = 0; i < 500; i++) {
    list.add(i, 1000);
}
list.set(a, b);

如果我查看前十个索引,我得到的不是 1000, 1000, 1000, 0, 1000, 1000, 1000, 1000, 1000, 1000,而是 1000, 1001, 1002 ,3 ,1004 ,1005 ,1006 ,1007 ,1008 ,1009

第二:

int a = 3;
int b = 0;
List<Integer> list = Collections.nCopies(500, 1000);
list.set(a, b);

我在 list.set(a, b) 行收到错误:java.lang.UnsupoprtedOperationException

最佳答案

Collection#nCopies创建一个不可变列表,因此您不能对其使用set

for (int i = 0; i < 500; i++) {
    list.add(i, 1000);
}

List#add 的用法中,您不是在列表末尾添加数字,而是在指定位置添加数字。

试试这个来填充列表:

for (int i = 0; i < 500; i++) {
    list.add(1000);
}

(正如其他人所指出的,但这似乎在这种特殊情况下没有什么区别)。

您可以将这两种方法结合起来

list.addAll(Collections.nCopies(500, 1000));

关于java - 在 JAVA 中创建具有所有相同值的 List<Integer>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19239670/

相关文章:

java - Android,创建 .mp3 文件的数组列表?

java - GoogleApiAvailability.getErrorDialog(android.app.Activity, int, int)

java - 获取 jinternal 框架中 jscrollpane 内的组件

python - 在 Python 中减去 numpy 数组时不需要的舍入

Java 在变量定义之外声明数组

c - 如何通过这个以结构体数组作为参数的函数返回正确的值?

JDK 安装后缺少 javah

java - Activity 结果错误

arrays - Swift 3.1 : Array too large to be initialized?(程序卡住)

php - 基于键、每个键一个元素从动态关联数组创建二进制配对数组