如何创建生成随机数的arraylist的方法

时间:2015-12-04 10:50:34

标签: java arraylist

import java.util.ArrayList;
import java.util.Random;

public static void main(String[] args) {
    ArrayList<Integer> random = new ArrayList<Integer>();
    random = getRandom(100, 100);
    for (int i = 0; i < random.size(); i++)
        System.out.println(random.get(i));
}

private static ArrayList<Integer> getRandom(int range, int size) {
    ArrayList<Integer> randomNumbers = new ArrayList<Integer>();
    for (int i = 0; i < size; i++)
        randomNumbers.set(i, new Random().nextInt(range)+1);
    return randomNumbers;
}

每当我运行它时,我在线程“main”中得到一个异常java.lang.IndexOutOfBoundsException:索引:0,大小:0

5 个答案:

答案 0 :(得分:3)

更改

randomNumbers.set(i, new Random().nextInt(range)+1);

randomNumbers.add(new Random().nextInt(range)+1);

set()的{​​{1}}方法适用于ArrayList现有元素,但在您的情况下,为空,这意味着第一次调用

ArrayList

randomNumbers.set(i, new Random().nextInt(range)+1); 无效。请改用i == 0

答案 1 :(得分:0)

Arraylistarrays支持,当您对set使用index方法时,它会尝试将值设置为index array为空IndexOutOfBoundsException,因此首先需要填充Arraylist

为此,您需要使用add方法,而不是set

答案 2 :(得分:0)

除了JDev's correct response above之外,请查看ArrayList#set的{​​{3}}的说明:

  

使用指定的元素替换此列表中指定位置的元素。

因此,必须填充指定的索引才能使ArrayList#set调用成功。

答案 3 :(得分:0)

arrayList.set(index, value) method is used to replace old value with new value. But in your case, you are not replacing a value. You are just simply adding values.
So, Use add method of list.



randomNumbers.add(new Random().nextInt(range)+1);

And for printing the values of Arraylist, you are using:

for (int i = 0; i < random.size(); i++)
        System.out.println(random.get(i));

but no need to iterate it through for loop, You can directly print this like below:

System.out.println(random);

答案 4 :(得分:0)

如果需要,您还可以使用功能样式:

List<Integer> list = IntStream.range(0, 100)
    .mapToObj(i -> random.nextInt(100))
    .collect(Collectors.toList());

这将导致您的问题成为minimize the moving parts的一部分:)