No, il problema è un altro: tu usi la forma prefissa dell'operatore ++, questo genera l'errore. Prova così:
codice:
for(int i = 0; i < listaCD.size(); i++){
   confronto = (CD) listaCD.get(i);
   if(confronto.matchTitolo(titolo))
      return confronto;
   }
   return null;
}
...
Questo perchè la forma prefissa agisce in modo decisamente diversa dalla forma suffissa:

La forma prefissa, prima incrementa la variabile, poi valuta l'espressione. Questo significa che al momento del test i vale (size - 1), poi viene incrementata i ed il controllo va avanti.

La forma suffissa, invece, agisce al contrario: prima valuta la variabile, poi essa viene incrementata.

Con quel codice, infatti, ti perde il primo valore della lista, ma tenta di recuperare quello oltre l'ultimo. A te serve il primo e non quello dopo l'ultimo (che è NULL)!


Ciao.