В документации API scala.collection.mutable.SynchronizedSet
предлагается вместо этого использовать java.util.concurrent.ConcurrentHashMap[A, Unit]
.
Если вы хотите, чтобы это выглядело как Set
вместо как Map
, то вы можете использовать java.util.Collections.newSetFromMap
добавить обертки вокруг Map
, чтобы сделать его похожим на Set
:
def createSet[T]() = java.util.Collections.newSetFromMap(
new java.util.concurrent.ConcurrentHashMap[T, java.lang.Boolean])
Это, однако , верните Java Set
. Вы можете обернуть это как scala.collection.mutable.Set
:
def createSet[T]() = {
import scala.collection.JavaConverters._
java.util.Collections.newSetFromMap(
new java.util.concurrent.ConcurrentHashMap[T, java.lang.Boolean]).asScala
}
Теперь вы можете создать синхронизированный набор с элементами определенного типа, например Long
, как это:
val set = createSet[Long]
Обратите внимание, что [API Docs] (http://www.scala-lang.org/api/current/scala/collection/mutable/SynchronizedSet.html) предлагают то, что вы могли бы использовать вместо устаревшего 'SynchronizedSet'. – Jesper
Они предлагают использовать ConcurrentHashMap, меня интересует Set – Prakash