Если класс CopyOnWriteCollection
находится под вашим контролем, я бы подошел к этому, добавив к нему метод addAll()
:
/** Returns copy of collection with new element. */
fun addAll(elements: Collection<T>): CopyOnWriteCollection<T> {
// ...
}
Затем вы могли бы назвать это, например,
val newCollection = oldCollection.addAll(listOf(1, 2, 3))
(Или вы можете взять vararg
вместо коллекции.)
Это может занять намного меньше времени и памяти.
(Кроме того, если вам действительно нужно написать собственный класс коллекции, я настоятельно рекомендую реализовать Collection
(или один из его подинтерфейсов, если необходимо) или расширить класс, который это делает. Это даст доступ к огромным ряд методов расширения и другие полезности в stdlib.)