0

カスタムコレクションがあるとします

class CopyOnWriteCollection<T> {

   // returns copy of collection with new element
   fun add(element: T): CopyOnWriteCollection<T> {
    ...
   }
}

いくつかの要素を追加する必要がある場合は、次のようにします。

val newCollection = oldCollection
    .add(1)
    .add(2)
    .add(3)

AndnewCollectionからの要素が含まれてoldCollectionおり、1、2、3 も含まれています。完全!

forEachしかし、ofを使用して別のコレクションから要素を追加するにはどうすればよいmapですか?

val collection = CopyOnWriteCollection()
(1..3).forEach { collection.add(it) } // this approach works only with mutable collections
4

2 に答える 2

0

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(または適切な場合はそのサブインターフェイスの 1 つ) を実装するか、そうするクラスを拡張することを強くお勧めします。これにより、膨大な範囲の拡張メソッドやその他のメソッドにアクセスできるようになります。 stdlib のグッズ)

于 2019-06-20T12:00:20.123 に答える