【问题标题】:How to do the Scala's Seq ++ operand in Java如何在 Java 中执行 Scala 的 Seq++ 操作数
【发布时间】:2025-12-08 21:00:01
【问题描述】:

我正在使用 Java 中的 Scala 的 Seq 类 (scala.collection.Seq<A>),根据 Scala documentation,有一个 ++ 操作数将两个 Seq 合并为一个。我怎样才能在 Java 中做同样的事情?

【问题讨论】:

  • seq1.++(seq2) 不起作用吗?
  • @SarveshKumarSingh 不,它没有。看我的回答。

标签: java scala


【解决方案1】:

Scala 标识符 ++ 在 JVM 上被翻译成 $plus$plus。不幸的是,你不能调用seq1.$plus$plus(seq2),因为++的真正签名是

def ++[B >: A, That](that: GenTraversableOnce[B])(implicit bf: CanBuildFrom[Repr, B, That]): That

并提供来自 Java 的 CanBuildFrom 参数...在技术上是可行的,但不是您想做的事情。

所以我建议在 CanBuildFrom 涉及时使用 Java 之前使用 JavaConverters 方法将 Scala 集合转换为 Java。

【讨论】:

【解决方案2】:

要在 java 中做同样的事情,您可以使用 addAll 方法。假设您有两个列表 listOne 和 listTwo。

List<T> resultList = new ArrayList<T>(listOne);
resultList.addAll(listTwo);

【讨论】:

    最近更新 更多