Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

IndexOutOfBoundsException when adding to ArrayList at index

I get exception Exception in thread "main" java.lang.IndexOutOfBoundsException: Index: 1, Size: 0 for the below code. But couldn't understand why.

public class App {
    public static void main(String[] args) {
        ArrayList<String> s = new ArrayList<>();

        //Set index deliberately as 1 (not zero)
        s.add(1,"Elephant");

        System.out.println(s.size());                
    }
}

Update

I can make it work, but I am trying to understand the concepts, so I changed declaration to below but didnt work either.

ArrayList<String> s = new ArrayList<>(10)
like image 353
Bala Avatar asked Apr 25 '14 08:04

Bala


People also ask

How do you add an element to an ArrayList using index?

The java. util. ArrayList. add(int index, E elemen) method inserts the specified element E at the specified position in this list.It shifts the element currently at that position (if any) and any subsequent elements to the right (will add one to their indices).

What causes Java Lang IndexOutOfBoundsException?

The IndexOutOfBoundsException is thrown when attempting to access an invalid index within a collection, such as an array , vector , string , and so forth. It can also be implemented within custom classes to indicate invalid access was attempted for a collection.

Why is my ArrayList out of bounds?

The ArrayIndexOutOfBounds exception is thrown if a program tries to access an array index that is negative, greater than, or equal to the length of the array. The ArrayIndexOutOfBounds exception is a run-time exception. Java's compiler does not check for this error during compilation.

Can you use indexOf for an ArrayList?

The index of a particular element in an ArrayList can be obtained by using the method java. util. ArrayList. indexOf().


1 Answers

ArrayList index starts from 0(Zero)

Your array list size is 0, and you are adding String element at 1st index. Without adding element at 0th index you can't add next index positions. Which is wrong.

So, Simply make it as

 s.add("Elephant");

Or you can

s.add(0,"Elephant");
like image 96
Naveen Kumar Alone Avatar answered Sep 20 '22 16:09

Naveen Kumar Alone