質問

どのようなこさず新作コレクション?のようなものはありますよ。

val m = scala.collection.mutable.Map[String, Long]("1" -> 1, "2" -> 2, "3" -> 3, "4" -> 4)
m.foreach(t => if (t._2 % 2 == 0) m.remove(t._1))
println(m)

P.S.にScala2.8

役に立ちましたか?

解決

retainは何をしたいん。 2.7でます:

val a = collection.mutable.Map(1->"one",2->"two",3->"three")
a: scala.collection.mutable.Map[Int,java.lang.String] = 
  Map(2 -> two, 1 -> one, 3 -> three)

scala> a.retain((k,v) => v.length < 4)   

scala> a
res0: scala.collection.mutable.Map[Int,java.lang.String] =
  Map(2 -> two, 1 -> one)

これも動作しますが、私は2.8で、まだ流動的であると思います。

他のヒント

Scalaの可変マップごとにリファレンス・ページ、あなたはどちらかと単一の要素を削除することができます - =または削除、そのようなます:

val m = scala.collection.mutable.Map[String, Long]("1" -> 1, "2" -> 2, "3" -> 3, "4" -> 4)
m -= "1" // returns m
m.remove("2") // returns Some(2)

の差はつまり - 削除が除去されたキーに対応する値を含むオプションを返しながら(一があった場合)=、元のマップ・オブジェクトを返す

他の回答が示すように、あなたが条件に基づいて、多くの要素を削除したい場合は、

もちろん、あなたが、保持になどのフィルタを、確認する必要があります。

を使用している場合には、これは immutable.Map, は、 2.7 してやる必要があることもありのようなもの:

def pred(k: Int, v: String) = k % 2 == 0

m --= (m.filter(pred(_, _)).keys

はありません retain 方法。このケースでは明らかに m 必要として宣言されている var

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top