我试图在第三个位置向我的数组中添加一个字符串,因为我需要这样做一个循环,我会在它之后执行。
java.lang.IndexOutOfBoundsException: Invalid index 3, size is 0
它给出了债券预期,这是不可能做到的?
public static Iterable<String> sliceArray(final String[] array,
final int start) {
return new Iterable<String>() {
String[] values = array;
int posn = start;
@Override
public Iterator<String> iterator() {
return new Iterator<String>() {
@Override
public boolean hasNext() {
return posn < values.length;
}
@Override
public String next() {
return values[posn++];
}
@Override
public void remove() {
throw new UnsupportedOperationException("No remove");
}
};
}
};
}
答案 0 :(得分:2)
当你说
时arrayList.add(n, value);
结果是在add
之后,arrayList.get(n)
将具有该值。您正在尝试安排事情,以便arrayList.get(3)
为mString
。但是,ArrayList
必须是连续元素的列表;它不能是一个“稀疏阵列”。也就是说,要使arrayList.get(3)
存在,arrayList.get(0)
,arrayList.get(1)
和arrayList.get(2)
也必须存在。
我不知道你想要那些值(也许null
?),但你必须设置它们。 Java的ArrayList
没有add
方法,可以使用默认值自动填充空白。您可以像这样向数组添加3 nulls
:
arrayList.addAll(Arrays.asList(new String[3]));
答案 1 :(得分:-1)
你应该在索引3之前用空字符串填充数组,如下所示:
namesArray.add("");
namesArray.add("");
namesArray.add("");
然后你不会得到那个例外