在JAVA中创建具有所有相同值的List <integer> </integer>

时间:2013-10-08 05:22:11

标签: java arrays

我正在尝试创建一个长度为500的List,所有索引都初始化为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

2 个答案:

答案 0 :(得分:7)

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

答案 1 :(得分:0)

嘿我编译你的代码并打印输出。它显示正确的结果。只是检查你打印列表的方式。使用: -

for(int i=0;i<10;i++)
 {
    System.out.println(list.get(i));
 }