Используйте библиотеку Google Collections Immutable*
для всех ваших постоянных потребностей в коллекции. Я полагаю, вам понадобится легкий обернутый класс - который можно очень легко сделать с помощью Forwarding*
(также в GC) - который порождает новые неизменяемые (или изменяемые, что угодно) операции добавления / удаления. Наконец, если вашим модификациям не нужно самим создавать новые модификации, вы можете реализовать эти операции, используя различные опции в библиотеках вспомогательных статических коллекций в GC (Iterables, Lists, Sets и т.д.), чтобы получить представления (переустановки). : объединение, пересечение, фильтр).
edit: однако, Google-код сейчас очень медленный - возможно, придется немного подождать, чтобы проверить это.