Ho votato per la soluzione di codingoutloud e mi piacerebbe approfondire un po '.
Il wrapping delle raccolte in classi è qualcosa che sono venuto a cercare di fare sempre - la mia regola è "Non passare mai una collezione naked". I più grandi fallimenti di OO che ho visto è quando le persone hanno paura di aggiungere metodi a cui appartengono. Nel tuo caso i metodi appartengono alla collezione (Totalmente ovviamente se ci pensi), quindi mettili lì avvolgendo la raccolta, e per mettere la ciliegina sulla torta, esponi solo la funzionalità di cui hai bisogno al di fuori della tua nuova classe (come codingoutloud fatto) in modo che tu possa guardare la tua singola, piccola classe e capire facilmente tutto ciò che manipola quella raccolta.
Non devi risolvere tutti i possibili problemi perché è tutto il tuo codice, puoi modificare il wrapper della raccolta con la stessa facilità con cui puoi modificare le altre classi che interagiscono con esso. Ciò ti consente di inserire altro codice nella classe, se necessario; se non esci mai la raccolta diventerà subito ovvio quale codice appartiene al wrapper.
Questo ti dà anche il controllo completo sulla collezione in modo che tu possa evitare che entri in uno stato incoerente con la sua funzione (Ad esempio, se nessuna voce nella raccolta può essere nullo, basta impedire a chiunque di inserire un valore null!)
La maggior parte del codice OO errato che abbia mai visto è stata creata perché qualcuno ha scelto di scrivere utilità statiche o codice inline appartenente a oggetti a cui non è stato possibile aggiungere codice anziché utilizzare gli oggetti inoffensivi nel proprio codice che potrebbero modificare.