コレクションの書き込みオペレーション
ミュータブルなコレクションはコレクションの中身を変更するオペレーションをサポートしています、
例えば要素の追加や削除などの事です。
このページでは、MutableCollection
のすべての実装で使用可能な書き込みオペレーションについて説明します。
List
やMap
専用のオペレーションについては、リスト特有のオペレーション と マップ特有のオペレーションをそれぞれ参照ください。
要素の追加
リストやセットに要素を追加するには、add()
関数を使います。指定したオブジェクトはコレクションの最後に追加されます。
addAll()
は引数のオブジェクトの各要素をリストまたはセットに追加します。その引数はIterable
、Sequence
、Array
のどれかです。
レシーバと引数の型は違っても構いません。例えばSet
の要素をすべてList
に追加する、という事が出来ます。
リストに対してaddAll()
を呼ぶと、新しく追加される要素は、引数に入ってきたのと同じ順番で追加されます。
addAll()
に要素の場所を指定する引数を最初に追加して呼ぶ事も出来ます。
引数のコレクションの最初の要素がこの位置に挿入されます。
引数のコレクションのそれ以外の要素がこの後に続き、レシーバの要素は終端側にシフトします。
インプレース版の plus
演算子 - plusAssign
(+=
)
を使う事で、も要素を追加する事が出来ます。
ミュータブルなコレクションに適用すると、+=
は二番目のオペランド(要素か別のコレクションのどちらか)をコレクションのお尻に追加します。
要素の削除
ミュータブルなコレクションから要素を削除するには、remove()
関数を使います。
remove()
は要素の値を引数にとって、この値に一致する1つ目を削除します。
複数の要素を一括で削除したければ、以下の関数があります:
removeAll()
は引数のコレクションに存在する要素をすべて削除します。 引数はコレクションの代わりに、述語を引数にする事も出来ます。この場合は、述語がtrue
を返すすべての要素を削除します。retainAll()
はremoveAll()
のちょうど反対になります:引数のコレクションに存在する要素以外のすべてを削除します。 述語で呼ぶと、述語にマッチする要素だけを残します。clear()
はリストから全ての要素を削除して、空にします。
コレクションから要素を削除する別の方法としては、
minusAssign
(-=
) 演算子を使うというものがあります。
これはインプレース版のminus
演算子です。
二番目の引数は要素の型と同じ型の単一のインスタンスでも良いですし、別のコレクションでも構いません。
右辺に単一のインスタンスが来る場合、-=
は最初に一致した要素を削除します。
一方、コレクションが来る場合は、すべての一致する要素を削除します。
例えば、リストが重複する要素を保持している場合、それらが一度に全部削除されます。
二番目のオペランドはコレクションに無い要素が入っていても構いません。
そのような要素はオペレーションの結果には影響を与えません。
要素の更新
リストとマップは要素の更新のオペレーションも提供しています。 それらに関してはリスト特有のオペレーション と マップ特有のオペレーションに説明があります。 セットに関しては、更新というのは成立しません、なぜならそれは単に要素を削除して別の要素を追加している事になってしまうからです。