- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
在 scala.collection
,有两个非常相似的对象 JavaConversions
和 JavaConverters
。
最佳答案
编辑:Java 转换
在 Scala 2.13.0 中得到了@deprecated
。使用scala.jdk.CollectionConverters相反。
JavaConversions
提供了一系列隐式方法,可以在 Java 集合和最接近的相应 Scala 集合之间进行转换,反之亦然。这是通过创建实现 Scala 接口(interface)并将调用转发到底层 Java 集合或 Java 接口(interface)并将调用转发到底层 Scala 集合的包装器来完成的。
JavaConverters
使用 pimp-my-library 模式将 asScala
方法“添加”到 Java 集合,并将 asJava
方法“添加”到Scala 集合,返回上面讨论的适当的包装器。它比 JavaConversions(自 2.8 版起)更新(自版本 2.8.1 起),并且使 Scala 和 Java 集合之间的转换变得明确。与 David 在他的回答中所写的相反,我建议您养成使用 JavaConverters 的习惯,因为您不太可能编写进行大量隐式转换的代码,因为您可以控制发生这种情况的唯一位置:编写 .asScala
或 .asJava
的位置。
以下是JavaConverters
提供的转换方法:
Pimped Type | Conversion Method | Returned Type
=================================================================================================
scala.collection.Iterator | asJava | java.util.Iterator
scala.collection.Iterator | asJavaEnumeration | java.util.Enumeration
scala.collection.Iterable | asJava | java.lang.Iterable
scala.collection.Iterable | asJavaCollection | java.util.Collection
scala.collection.mutable.Buffer | asJava | java.util.List
scala.collection.mutable.Seq | asJava | java.util.List
scala.collection.Seq | asJava | java.util.List
scala.collection.mutable.Set | asJava | java.util.Set
scala.collection.Set | asJava | java.util.Set
scala.collection.mutable.Map | asJava | java.util.Map
scala.collection.Map | asJava | java.util.Map
scala.collection.mutable.Map | asJavaDictionary | java.util.Dictionary
scala.collection.mutable.ConcurrentMap | asJavaConcurrentMap | java.util.concurrent.ConcurrentMap
—————————————————————————————————————————————————————————————————————————————————————————————————
java.util.Iterator | asScala | scala.collection.Iterator
java.util.Enumeration | asScala | scala.collection.Iterator
java.lang.Iterable | asScala | scala.collection.Iterable
java.util.Collection | asScala | scala.collection.Iterable
java.util.List | asScala | scala.collection.mutable.Buffer
java.util.Set | asScala | scala.collection.mutable.Set
java.util.Map | asScala | scala.collection.mutable.Map
java.util.concurrent.ConcurrentMap | asScala | scala.collection.mutable.ConcurrentMap
java.util.Dictionary | asScala | scala.collection.mutable.Map
java.util.Properties | asScala | scala.collection.mutable.Map[String, String]
不过,要直接使用 Java 中的转换,最好直接从 JavaConversions
调用方法;例如:
List<String> javaList = new ArrayList<String>(Arrays.asList("a", "b", "c"));
System.out.println(javaList); // [a, b, c]
Buffer<String> scalaBuffer = JavaConversions.asScalaBuffer(javaList);
System.out.println(scalaBuffer); // Buffer(a, b, c)
List<String> javaListAgain = JavaConversions.bufferAsJavaList(scalaBuffer);
System.out.println(javaList == javaListAgain); // true
关于scala - Scala 中的 JavaConverters 和 JavaConversions 有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8301947/
我有下面的代码片段。它在 scala 2.11 中带有警告时工作正常 import java.util.{ ArrayList => JAList } val jlist = new
当我尝试运行基于 this example 的代码时,我收到以下警告: warning: object JavaConversions in package collection is depreca
我知道如果我做 import collection.JavaConverters._ 我可以做一个javaList.asScala。但在collection.JavaConverters的API文档中
在 scala.collection ,有两个非常相似的对象 JavaConversions和 JavaConverters 。 这两个对象有什么区别? 为什么它们同时存在? 我什么时候想使用其中一种
在 scala.collection ,有两个非常相似的对象 JavaConversions和 JavaConverters 。 这两个对象有什么区别? 为什么它们同时存在? 我什么时候想使用其中一种
我使用通用函数合并了 scala Map 的 scala Set def mergeMaps[A, B](ms: Set[Map[A, B]])(f: (B, B) => B): Map[A, B]
我了解 Scala 的 JavaConversions添加各种 Java 和 Scala 集合之间的隐式转换。我了解它在 Scala 中的工作原理,使用 implicit关键字。 但是,就我而言,我正
我有这个密码查询: start s1=node:__types__(className="xxx.domain.Soc") match (s1)-[:SIMILAR*]-(s2) with s1, c
我在Android中使用Scala,我想将scala.collection.mutable.ArrayBuffer转换为Java.util.List。但它不起作用,有人可以帮助我吗? 代码: pack
我有返回这种类型的 java API: ArrayList[ArrayList[String]] = Foo.someJavaMethod() 在scala程序中,我需要将上述类型作为参数发送给类
我是一名优秀的程序员,十分优秀!