当前位置: 首页 > 面试题库 >

集合中Scala.Long和Java.lang.Long之间的隐式转换

吴均
2023-03-14
问题内容

我正在使用JavaConverters将Java SortedSet转换为Vector。

    val lines = function.getInstructions.asScala.toVector

我的getInstructions函数返回java.lang.Long的ArrayList,但是使用代码需要Scala.Long。有没有一种方法可以在不将所有使用代码都更改为使用Java.lang.Long的情况下进行操作?

此外,是否有一种方法可以对值类进行隐式转换,以允许对ArrayList的随机访问而无需如上所述分配额外的对象?非常感谢您提供的任何见解。


问题答案:

Scala具有自动装箱功能,因此在大多数情况下,a
scala.Longjava.lang.Long。当值存储在像这样的集合中时,几乎总是这样Vector。目前可以安全地.asInstanceOf[Vector[scala.Long]]进行转换Vector,但是将来可能会改变。

一种更安全的方法是显式转换值。Scala在scala.Long和之间进行了隐式转换java.lang.Long,但是它们不会转换这些类型的集合。但是,您可以将其与map进行转换,例如.map(Long2long),将的集合转换java.lang.Long为的集合scala.Long

至于第二个问题,如果您导入scala.collection.JavaConversions._而不是导入,JavaConverters则会得到一组隐式转换。但是,推荐的方法是使用JavaConverters。在您的情况下,这样做也将更加有效,因为包装器只需创建一次。

如果您真的想快速危险地玩游戏,可以编写自己的隐式转换:

implicit def convArrayList(al: ArrayList[java.lang.Long]): Vector[Long] =
  al.asScala.map(Long2long)(collection.breakOut)


 类似资料:
  • 问题内容: 我使用通用函数合并了scala 的scala 当存在相同的键冲突时,可以处理这种情况。但是,我想使用Scala Code中的Java集合来实现。我研究了一下,发现了。我导入并编写了这个 但是,它说类型不匹配 是不是用来隐式转换为?我在这里想念什么? 问题答案: 他们说尝试使用JavaConverters,因为不推荐使用JavaConversions。 也许要说明为什么不推荐使用它: 注

  • 问题内容: “隐式转换”和“显式转换”有什么区别?Java和C ++的区别是否不同? 问题答案: 显式转换是您使用某种语法 告诉 程序进行转换的地方。例如(在Java中): 隐式转换是在没有任何语法的情况下进行转换的地方。例如(在Java中): 应该注意的是(在Java中)涉及原始类型的转换通常涉及某种表示形式的更改,并且可能导致精度降低或信息丢失。相比之下,仅涉及引用类型的转换不会更改基本表示形

  • 问题内容: 您能告诉我SQL Server中隐式转换和显式转换之间的区别吗? 我已经用谷歌搜索过,但是我听不懂。 问题答案: 当您在查询中显式使用or关键字时,就会发生显式转换。 当表达式中的数据类型不同时,SQL Server将根据数据类型优先级的规则自动将其强制转换,从而进行隐式转换。 例如,nvarchar的优先级高于varchar 第二个执行计划显示谓词为 在这种情况下,显式转换和隐式转换

  • 一、隐式转换 1.1 使用隐式转换 隐式转换指的是以 implicit 关键字声明带有单个参数的转换函数,它将值从一种类型转换为另一种类型,以便使用之前类型所没有的功能。示例如下: // 普通人 class Person(val name: String) // 雷神 class Thor(val name: String) { // 正常情况下只有雷神才能举起雷神之锤 def hamm

  • 本文向大家介绍Java中的集合与集合之间的区别,包括了Java中的集合与集合之间的区别的使用技巧和注意事项,需要的朋友参考一下 Java收集框架用于操纵对象的收集。收集框架包含多个包装器类,便利类,用于传统实现的类,例如vector和Hashtable,收集接口等。     集合是Java集合框架中的接口。它分为两部分- Java util集合-它包含诸如Set,queue,List等的类。 Ja

  • 本文向大家介绍Java中列表和集合之间的区别,包括了Java中列表和集合之间的区别的使用技巧和注意事项,需要的朋友参考一下 List和Set这两个接口都属于Collection框架。这两个接口都扩展了Collection接口。它们都用于将对象集合存储为单个单元。  在jdk1.2之前,我们曾经使用Arrays,Vectors和Hashtable将对象分组为一个单元。  序号 键 列表 组 1个 位