I am getting the error 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;
}
The problem is that you are using set method to update element at index 0
set(index,value) method needs an element to present at that index
but you haven't added any element at that position in medium arraylist before that .
So you need to first add an element at index 0 thereafter only you can update it with set method
You need to use
mediums.add(adDistribution.get(0));
rather than mediums.set(0, adDistribution.get(0));
etc.
ArrayList.set(int, Object)
requires there to be an element to replace:
Replaces the element at the specified position in this list with the specified element.
Throws:
IndexOutOfBoundsException
- if the index is out of range (index < 0 || index >= size())
In a new list, size() == 0
, so set(0, something)
fails.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With