概要
AtCoderに最近取り組んでいて、一度コレクションに入れた要素を削除したい場面が出てきます。該当する要素を削除した後のコレクションを、取得する方法をメモ書きします。
例題
下記のようなコレクションがあり、ここから要素が「1」のものを削除します。
val seqSample = Seq(1, 2, 1, 3, 1, 4, 1, 5, 1, 6)
対応
1. 「1」を全て削除する
filterNotメソッドを使うのが、一番簡単かなと思います。
【サンプルコード】
seqSample.filterNot(_ == 1)
【出力結果】
List(2, 3, 4, 5, 6)
2. 「1」を指定した数だけ削除する
どのように実装すれば良いか悩んだのですが、おそらくdiffメソッドを使うのが一番分かりやすいのかなと感じました。以下は「1」を1つだけ削除する場合です。
【サンプルコード】
seqSample.diff(Seq(1))
【出力結果】
List(2, 1, 3, 1, 4, 1, 5, 1, 6)
ちなみに「1」を2つ削除する場合は以下のように書けます。
【サンプルコード】
seqSample.diff(Seq(1, 1))
【出力結果】
List(2, 3, 1, 4, 1, 5, 1, 6)