“线程中的exception”主“java.lang.IndexOutOfBoundsException:Index:0,Size:0”with ArrayList?

“线程中的exception”main“java.lang.IndexOutOfBoundsException:Index:0,Size:0”是我编译此方法时遇到的主要错误:

public static ArrayList<ArrayList> createSparseArray(int len, double den) { int counter = 0; ArrayList placeHolder = new ArrayList(); for (int j = 0; j < len; j++) { double randomNumber = Math.random(); if (randomNumber < den) { counter++; placeHolder.add(j); } } ArrayList<ArrayList> list = new ArrayList<ArrayList>(); for (int k = 0; k < counter; k++) { for (int m = 0; m < 2; m++) { list.get(0).set(placeHolder.get(k), (int) (Math.random() * (99999) + 1)); } } return list; } 

我怎样才能解决这个问题?

ArrayList> list不包含第(0)个位置中的任何元素,并且当迭代器在指定的位置中找不到任何元素时,编译器会抛出超出范围的exception。

当你尝试执行list.get(0).set(placeHolder.get(k), (int) (Math.random() * (99999) + 1)); 声明,您的列表中不包含任何元素。 您需要迭代内部列表以设置列表的值。

不要对不存在的元素使用list.set(index, element) ,因为它用新的元素替换旧的(不存在的)元素并返回旧的元素。 相反,使用list.add(index, element) ,它将工作。

我在这里你有错误

名单。 get(0) .set(placeHolder.get(k),(int)(Math.random()*(99999)+ 1));

java.util.ArrayList.get(int index)方法返回此列表中指定位置的元素。

您只是设置列表arrray中的第一个元素