Win a copy of The Java Performance Companion this week in the Performance forum!
  • Post Reply
  • Bookmark Topic Watch Topic
  • New Topic

Multiple ArrayList

 
albert kao
Ranch Hand
Posts: 252
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
How to use multiple ArrayLists?
My test program has Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: -1
at java.util.ArrayList.get(ArrayList.java:324)
at ArrayListTest.main(ArrayListTest.java:9)
 
Kemal Sokolovic
Bartender
Posts: 825
5
Java Python Ruby
  • Likes 1
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
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.
 
Tony Docherty
Bartender
Posts: 2965
59
  • Likes 1
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
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
Posts: 252
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
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
Sheriff
Pie
Posts: 49411
62
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
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
 
  • Post Reply
  • Bookmark Topic Watch Topic
  • New Topic