【发布时间】:2020-04-12 10:25:35
【问题描述】:
我是 scala 新手,我需要编写一个 java 代码,将 scala.collection.immutable.List 数组传递给 scala 函数。更具体地说,我在我的 java 代码中使用了一个 scala 函数,它需要 scala.collection.immutable.List<Tuple2<Object, Object>>[] 作为参数。对象必须是<Integer, Double>。在java中这很简单:
java.util.List<Tuple2<Integer, Double>>[] javaList = new ArrayList[335];
for (int i = 0; i < 335; i++) {
javaList[i] = new ArrayList<Tuple2<Integer, Double>>();
}
for(int i=0; i<100;i++)
{
for(int j=0; j<50;j++)
{
javaList[i].add(new Tuple2<Integer, Double>(j, value(j)));
}
}
我需要或将其从 java 转换为 scala 或创建 scala.collection.immutable.List<Tuple2<Object, Object>>[] 并直接在我的 java 代码中使用它,但我很难找到它。我在一个 maven 项目中使用 Java 8、scala 2.12.2。
【问题讨论】:
-
Lists 的 Array 是一种奇怪的数据结构。无论如何,Scala 标准库提供了转换 b>Java 集合** 到 Scala 集合中,反之亦然。我会在 Scala 中编写一个接收 Java 输入的函数,将其转换为 Scala 输入,然后调用 scala 函数。
-
如果
@varargs def f(vs: List[Int]*),列表数组就不那么奇怪了。 -
我的问题是我无法更改函数中的 scala 参数:scala.collection.immutable.List
>[] 所以我需要找到一种方法java编码这个结构。 -
@vicangel 最简单的方法是添加一个新的 Scala 函数,该函数接收一个易于从 Java 创建的数据结构并进行转换。