当前位置: 首页 > 知识库问答 >
问题:

java.lang.IndexOutOfBoundsException:索引:0,大小:0异常[重复]

越嘉树
2023-03-14

我得到错误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;
}

共有2个答案

皇甫浩壤
2023-03-14

您需要使用

mediums.add(adDistribution.get(0));

而不是mediums.set(0,addistribution.get(0));等。

arraylist.set(int,Object)要求有一个元素要替换:

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

抛出:IndexOutOfBoundsException-如果索引超出范围(index<0 index>=size())

在新列表中,size()==0,因此set(0,something)失败。

鱼安然
2023-03-14

问题是您正在使用set方法更新索引0处的元素

set(index,value)方法需要一个元素出现在索引处

但在此之前,您还没有在medium arraylist中的那个位置添加任何元素。

因此您需要首先在索引0处添加一个元素,然后只有您可以使用set方法更新它

 类似资料: