![](/img/trans.png)
[英]How to convert Scala collection Seq[(Int, Seq[String])] to Java collection List[(int, List[String])]?
[英]Converting Scala seq<string> to Java List<string>
我在用Java工作。 我需要將Apache Kafka中Scala方法返回的Seq<String>
轉換為Java List<String>
進行處理。
我在scala.collection.convert.WrapAsJava類中找到了一種可以完成上述任務的方法seqAsJavaList
。
我還發現了一個有用的StackOverflow查詢。
在Java代碼中將scala.collection.Seq <String>轉換為java.util.List <String>
但是,當我嘗試以下代碼時-
public static void listTopics ()
{
ZkClient zkClient = connectToZookeeper();
ZkUtils zkUtils = zookeeperUtility(zkClient);
List<String> brokerTopics = WrapAsJava.seqAsJavaList(zkUtils.getAllTopics());
zkClient.close();
}
我收到編譯器錯誤,即無法從靜態上下文引用非靜態方法seqAsJavaList。
我無法實例化WrapAsJava,所以我不知道如何在此處創建非靜態上下文。
StackOverflow查詢對此代碼段給出了答案。
import scala.collection.convert.WrapAsJava;
public class Test {
java.util.List<String> convert(scala.collection.Seq<String> seq) {
return WrapAsJava.seqAsJavaList(seq);
}
}
可悲的是,它會引發相同的錯誤。 我怎樣才能解決這個問題? 謝謝!
(這是zkUtils.getAllTopics()方法)
def getAllTopics(zkClient: ZkClient): Seq[String] = {
val topics = ZkUtils.getChildrenParentMayNotExist(zkClient, BrokerTopicsPath)
if(topics == null)
Seq.empty[String]
else
topics
}
您可以使用scala.collection.JavaConversions
:
import scala.collection.JavaConversions;
import scala.collection.immutable.Seq;
Seq<String> strings = ... //
List<String> javaList = JavaConversions.seqAsJavaList(strings);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.