Innanzitutto scorrere gli elementi e poi, trovato l'elemento voluto, usare indexOf è parecchio .... molto "rozzo".
Tra l'altro, in questo caso non necessariamente devi usare per forza l'iteratore direttamente. Potresti anche usare il "for-each".
Il punto è che sarebbe meglio tenersi un indice .... non usare indexOf.
La questione di indexOf è che tira in ballo il concetto della uguaglianza tra oggetti Pubblicazione, ovvero se e come è stato definito il equals(), che nel caso della ricerca esplicita per titolo non c'entrerebbe nulla.
In questi non vedo nulla di intrinsecamente sbagliato.
Anzi, una cosa potrebbe essere dubbia: perché nel penultimo metodo (cerca) hai usato numRipiani mentre nell'ultimo metodo (rimuovi) hai usato contenuto.length?
Chiaramente non si riesce a vedere il contesto completo del codice ..... quindi potrebbero esserci altri problemi che non sono ora evidenti.