Granny's Programming Pearls
"inside of every large program is a small program struggling to get out"
The moose likes Beginning Java and the fly likes Multiple ArrayList Big Moose Saloon
  Search | Java FAQ | Recent Topics | Flagged Topics | Hot Topics | Zero Replies
Register / Login
JavaRanch » Java Forums » Java » Beginning Java
Bookmark "Multiple ArrayList" Watch "Multiple ArrayList" New topic

Multiple ArrayList

albert kao
Ranch Hand

Joined: Feb 04, 2010
Posts: 252
How to use multiple ArrayLists?
My test program has Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: -1
at java.util.ArrayList.get(
at ArrayListTest.main(
Kemal Sokolovic

Joined: Jun 19, 2010
Posts: 825

Did you check the API for the constructor you are invoking at line 5? It says:

public ArrayList(int initialCapacity)
Constructs an empty list with the specified initial capacity.

So, basically, until you add values in your list, the size of the list is 0. Hence, statement inside for loop is not executed, and a.get(a.size() - 1) is actually a.get(-1), and that's not valid index so you get an exception.

The quieter you are, the more you are able to hear.
Tony Docherty

Joined: Aug 07, 2007
Posts: 2839
Specifying the initial capacity in the constructor doesn't mean the list will have that many elements in it, it just specifies the maximum number of elements that can be added before the backing array must be resized.
Therefore, the ArrayList will be constructed with a backing array of length 5 but the array will be empty and the ArrayList size will be 0 and so the for loop won't add any elements and hence your attempt to get the last element (a.size()-1) fails as the ArrayList is empty.
albert kao
Ranch Hand

Joined: Feb 04, 2010
Posts: 252
I modify my test program so that it will store the integer from 0 to 4.
However, the output is
a1 [] size 5 []
I expect to see integer 1 and 4 but get "[]".
How to fix this program?

Campbell Ritchie

Joined: Oct 13, 2005
Posts: 46375
Try creating an array list and printing it out. You find you get a pair of square brackets, with all the elements inside. Maybe you have got empty lists from those get() calls, and they simply print out the pair of square brackets. If you look for the array lists’s toString method, you find this, which tells you about the square brackets. It doesn’t say that an empty List prints as [], but you can probably validate that with
I agree. Here's the link:
subject: Multiple ArrayList
It's not a secret anymore!