He votado a favor de codificar la respuesta en voz alta y me gustaría ampliarla un poco.
Ajustar colecciones en clases es algo que siempre he intentado hacer: mi regla es "Nunca pasar una colección desnuda". Los mayores fracasos de OO que he visto es cuando las personas tienen miedo de agregar métodos a los que pertenecen. En su caso, los métodos pertenecen a la colección (Totalmente obvio si lo piensa), así que póngalos allí envolviendo la colección y para poner la guinda del pastel, solo exponga la funcionalidad que necesita fuera de su nueva clase (como codingoutloud hizo) para que pueda ver a su clase pequeña y única y comprender fácilmente todo lo que manipula esa colección.
No tiene que resolver todos los problemas posibles porque es todo su código, puede editar el contenedor de colección tan fácilmente como puede editar las otras clases que interactúan con él. Esto le permite incluir otro código en la clase según sea necesario; si nunca expone la colección, se hará rápidamente evidente qué código pertenece en el contenedor.
Esto también le da un control completo sobre la colección para que pueda evitar que entre en un estado inconsistente con su función (por ejemplo, si ninguna entrada en la colección puede ser nula, ¡simplemente evite que alguien ingrese un nulo!)
La mayor parte del código OO incorrecto que he visto se ha creado porque alguien eligió escribir utilidades estáticas o código en línea que pertenecían a objetos a los que no podían agregar código en lugar de envolver los objetos ofensivos en un código propio que podrían modificar .