All Downloads are FREE. Search and download functionalities are using the official Maven repository.

scala.jdk.CollectionConverters.scala Maven / Gradle / Ivy

/*
 * Scala (https://www.scala-lang.org)
 *
 * Copyright EPFL and Lightbend, Inc.
 *
 * Licensed under Apache License 2.0
 * (http://www.apache.org/licenses/LICENSE-2.0).
 *
 * See the NOTICE file distributed with this work for
 * additional information regarding copyright ownership.
 */

package scala.jdk

import scala.collection.convert.{AsJavaExtensions, AsScalaExtensions}

/** 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.util.stream.Stream 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)
  * }}}
  */
object CollectionConverters extends AsJavaExtensions with AsScalaExtensions




© 2015 - 2024 Weber Informatics LLC | Privacy Policy