Für so was gibt es die HashMaps. Arrays sind da sehr suboptimal, aufgrund von Inkonsistenzen, und statischen Speicher. Das Array auch nicht wirklich sprechend.
Wieso legst du einen try-catch-Block um die addItem()-Methode? Diese Methode schmeißt eh keine Exception.
Eine Do-While-Schleife brauchst du hier auch nicht. Do-While-Schleifen findet man sowieso recht selten.
Java besitzt auch foreach-Schleifen (auch wenn sie nur als for-Schleife deklariert werden):
edit: Eine andere Möglichkeit wäre eine eigene Klasse für die Daten zu definieren: