Man*_*nju 4 java indexoutofboundsexception
我收到错误java.lang.IndexOutOfBoundsException:Index:0,Size:0.
public Collection<AdDistribution> getAdDistribution(byte srch, byte cont) throws IndexOutOfBoundsException {
List<AdDistribution> mediums = new ArrayList<>();
List<AdDistribution> adDistribution = new ArrayList<>();
adDistribution.add(AdDistribution.SEARCH);
adDistribution.add(AdDistribution.CONTENT);
if (adDistribution.isEmpty()) {
return null;
}
if (srch == 0 && cont == 0) {
mediums = new ArrayList<>();
mediums.set(0, adDistribution.get(0));
}
if (srch == 1 || cont == 1) {
mediums = new ArrayList<>();
if (srch == 1) {
mediums.set(0, adDistribution.get(0));
} else if (cont == 1) {
mediums.set(0, adDistribution.get(1));
}
}
if (srch == 1 && cont == 1) {
mediums = new ArrayList<>();
mediums.set(0, adDistribution.get(0));
mediums.set(1, adDistribution.get(1));
}
return mediums;
}
Run Code Online (Sandbox Code Playgroud)
问题是您使用set方法更新索引0处的元素
set(index,value)方法需要一个元素来呈现该索引
但是之前你没有在媒体arraylist中添加任何元素.
所以你需要先在索引0处添加一个元素,然后才能用set方法更新它
您需要使用
mediums.add(adDistribution.get(0));
Run Code Online (Sandbox Code Playgroud)
而不是mediums.set(0, adDistribution.get(0));等
ArrayList.set(int, Object) 要求要替换的元素:
用指定的元素替换此列表中指定位置的元素。
抛出:
IndexOutOfBoundsException-如果索引超出范围(索引<0 ||索引> = size())
在一个新的列表,size() == 0,所以set(0, something)失败。
| 归档时间: |
|
| 查看次数: |
61601 次 |
| 最近记录: |