CollectionConverters

This object provides extension methods that convert between Scala and Java collections.

This object provides extension methods that convert between Scala and Java collections.

When writing Java code, use the explicit conversion methods defined in javaapi.CollectionConverters instead.

Note: to create Java Streams that operate on Scala collections (sequentially or in parallel), use StreamConverters.

import scala.jdk.CollectionConverters._
val s: java.util.Set[String] = Set("one", "two").asJava

The conversions return adapters for the corresponding API, i.e., the collections are wrapped, not converted. Changes to the original collection are reflected in the view, and vice versa:

scala> import scala.jdk.CollectionConverters._

scala> val s = collection.mutable.Set("one")
s: scala.collection.mutable.Set[String] = HashSet(one)

scala> val js = s.asJava
js: java.util.Set[String] = [one]

scala> js.add("two")

scala> s
res2: scala.collection.mutable.Set[String] = HashSet(two, one)

The following conversions are supported via asScala and asJava:

scala.collection.Iterable       <=> java.lang.Iterable
scala.collection.Iterator       <=> java.util.Iterator
scala.collection.mutable.Buffer <=> java.util.List
scala.collection.mutable.Set    <=> java.util.Set
scala.collection.mutable.Map    <=> java.util.Map
scala.collection.concurrent.Map <=> java.util.concurrent.ConcurrentMap

The following conversions are supported via asScala and through specially-named extension methods to convert to Java collections, as shown:

scala.collection.Iterable    <=> java.util.Collection   (via asJavaCollection)
scala.collection.Iterator    <=> java.util.Enumeration  (via asJavaEnumeration)
scala.collection.mutable.Map <=> java.util.Dictionary   (via asJavaDictionary)

In addition, the following one-way conversions are provided via asJava:

scala.collection.Seq         => java.util.List
scala.collection.mutable.Seq => java.util.List
scala.collection.Set         => java.util.Set
scala.collection.Map         => java.util.Map

The following one way conversion is provided via asScala:

java.util.Properties => scala.collection.mutable.Map

In all cases, converting from a source type to a target type and back again will return the original source object. For example:

import scala.jdk.CollectionConverters._

val source = new scala.collection.mutable.ListBuffer[Int]
val target: java.util.List[Int] = source.asJava
val other: scala.collection.mutable.Buffer[Int] = target.asScala
assert(source eq other)
class Object
trait Matchable
class Any

Type members

Inherited classlikes

class BufferHasAsJava[A](b: Buffer[A])
Inherited from
AsJavaExtensions
class ConcurrentMapHasAsJava[K, V](m: Map[K, V])
Inherited from
AsJavaExtensions
class DictionaryHasAsScala[K, V](d: Dictionary[K, V])
Inherited from
AsScalaExtensions
Inherited from
AsJavaExtensions
Inherited from
AsScalaExtensions
Inherited from
AsJavaExtensions
Inherited from
AsScalaExtensions
class ListHasAsScala[A](l: List[A])
Inherited from
AsScalaExtensions
class MapHasAsJava[K, V](m: Map[K, V])
Inherited from
AsJavaExtensions
class MapHasAsScala[K, V](m: Map[K, V])
Inherited from
AsScalaExtensions
class MutableMapHasAsJava[K, V](m: Map[K, V])
Inherited from
AsJavaExtensions
class MutableSeqHasAsJava[A](s: Seq[A])
Inherited from
AsJavaExtensions
class MutableSetHasAsJava[A](s: Set[A])
Inherited from
AsJavaExtensions
class SeqHasAsJava[A](s: Seq[A])
Inherited from
AsJavaExtensions
class SetHasAsJava[A](s: Set[A])
Inherited from
AsJavaExtensions
class SetHasAsScala[A](s: Set[A])
Inherited from
AsScalaExtensions