当前位置: 首页 > 知识库问答 >
问题:

null java列表到scala Buffer

法浩壤
2023-03-14

想象一下我有一个java列表

val javaList: java.util.List[String] = null

如果我想将其用作scala集合,比如缓冲区,我只需添加以下导入(如前面多次描述的)

import scala.collection.JavaConversions._

问题是我必须检查列表是否不同于null。这将不起作用:

javaList foreach println          //throws java.lang.NullPointerException

有没有一个简单的方法来转换java列表scala集合在这样一种方式,空转换为Buffer.empty?类似于选项工厂:

Option(null)                      //> res0: Option[Null] = None
asScalaBuffer(javaList)           // I wish this to be ArrayBuffer()

共有2个答案

颛孙正卿
2023-03-14

您始终可以定义自己的:

import scala.collection.JavaConverters._
def safeScala[A](xs: java.util.List[A]) = {
  if (xs == null) collection.mutable.ArrayBuffer[A]()
  else xs.asScala
}
司马耘豪
2023-03-14

只需将其映射并使用选项即可

Option(javaList).map(asScalaBuffer).getOrElse(ArrayBuffer.empty)

使现代化

如果您仍然想要一个null数组/列表的工厂,那么您可以通过构造函数方法(基于Rex Kerr的答案)来模拟它:

def ArrayBuffer[T](jl: JavaList[T]) = if (jl == null) ArrayBuffer.empty[T] else asScalaBuffer(jl)

然后使用ArrayBuffer(null.asInstanceOf[JavaList[String])它看起来就像选项。apply

def apply[A](x: A): Option[A] = if (x == null) None else Some(x)
 类似资料:
  • 我的DTO中有一个字符串列表,我想把它映射成一个对象列表,在映射器中我使用服务通过这个字符串获取对象,但我有以下错误 考虑声明/实现一个映射方法:“java.util.list map(java.util.list value)”。

  • 我使用的是mapstruct 1.4.2.final。我有一个这样的问题: Business1 id有许多Business2 id关系。我想像RelationDTO一样使用DTO来记录。 谢谢你的留言。

  • 问题内容: 将列表列表转换为pandas数据框很容易: 但是,如何将df重新变成列表列表? 问题答案: 您可以访问基础数组并调用其方法:

  • 我正在用Play Framework和Scala创建一个后端API。我想将传入的请求映射到scala对象。该对象的实例变量之一是通道列表。以下是我目前拥有的: 接受请求并尝试将其映射到用户的Controller方法: 用户案例类: 理想情况下,我希望作为一个用户能够接受这一点: 并从中创建用户。

  • 我如何将一个简单的列表转换成一个Numpy数组?这些行是单独的子列表,每行包含子列表中的元素。

  • < code>list_of_lists=[[1,2,3],[4,5,6]] < br > < code > list _ to _ add =[" A "," B "," C"] 我希望结果是list_of_lists会变成: 谢谢!

  • 问题内容: 我想知道从ArrayList转换为Array是否安全/建议?我有一个文本文件,每行一个字符串: 我想将它们读入数组列表,然后将其转换为数组。建议这样做/合法吗? 谢谢 问题答案: 是的,将转换为是安全的。一个好主意取决于您的预期用途。您需要提供的操作吗?如果是这样,请将其保留为。否则转换掉! 输出

  • 这个问题似乎相当复杂,所以我在这里发布这个问题,寻找任何可能的解决方法。 我有地图清单。我想要一个地图列表,但要确保地图被转换成某种层次结构。 原始数据:(列表 此地图列表将转换为以下地图列表:(列表) 作为一个简单的解决方案,我试图手动处理它们(真的很无聊),所以我在寻找使用流或任何其他可能的方式来处理它们的任何高效、干净的方法。 更新朴素的解决方案如下