2016-11-03 6 views
0

私はScalaで変更可能なパラレルマップをラップしており、マップから単一の値を削除して返したいと思います。現在の実装は次のとおりです。パラレルの変更可能なマップから単一の値を削除して返します

class MyContainer[O] { 

    def remove(uuid: UUID): Option[O] = backingStore.get(uuid) match { 
     case result @ Some(item) => backingStore -= item.uuid; result 
     case None => None 
    } 

    private[this] val backingStore: parallel.mutable.ParHashMap[UUID, O] 

} 

...しかしこれは控えめです。これを達成するためにもっと慣れ親しんだ方法がありますか?おそらくパターンマッチングなし?

+0

変更可能な並列音災害のためのレシピ...あなたは確信しているようgetメソッドによって返さOptioncollectを使用できますか?例えば。 TrieMapを介して? – Reactormonk

+0

@Reactormonk 1つのメインスレッドだけがコンテナにアクセスしますが、そのコンテナメソッドは並列化されるという計画です。しかし、私はあなたの要点を受け取り、TrieMap(既に 'remove'メソッドを持っています)を調べます。 – davidrpugh

答えて

0

あなたはない、より良い方法があります

backingStore.get(uuid).collect { case Some(value) => 
backingStore -= item.uuid 
value 
} 
関連する問題