从 scala.collection.immutable.List 转换为 java 中的 java.util.List

Converting from scala.collection.immutable.List to a java.util.List in java

我目前在 java 运行时 google 云数据流中工作。我正在使用的 scala sdk 显示了我正在使用的 属性 作为不可变列表:https://github.com/snowplow/snowplow-scala-analytics-sdk/blob/master/src/main/scala/com.snowplowanalytics.snowplow.analytics.scalasdk/Event.scala#L91

最终列表 上下文

有没有人知道如何正确地将其转换/转换为 Java 列表?我发现的大多数示例都是在 Scala 运行时与 Java 运行时中执行此操作的。

我原以为 JavaConverters 包可以帮到我,但是这些方法似乎并不需要不可变的 Scala 列表。

下例中的 e 是链接 sdk 中事件的一个实例。

List<SelfDescribingData<Json>> list = JavaConverters.asScalaBufferConverter(e.contexts()).asScala().toList();
for (SelfDescribingData<Json> t : list) {
    LOG.info(t.toString());
}

JavaConverters.asScalaBufferConverter:

Adds an asScala method that implicitly converts a Java List to a Scala mutable Buffer

要将 scala.collection.immutable.Listscala.collection.immutable.Seqscala.collection.Seq 的子类型转换为 java.util.List,您可以调用 JavaConverters.asJava:

java.util.List<SelfDescribingData<Json>> list = JavaConverters.asJava(e.contexts().data())

我发布的代码是在 Scala 2.13 集合重写之后。对于旧版本的 Scala,等效函数是 JavaConverters.seqAsJavaList