Конкатенация Scala сек в Java - PullRequest
0 голосов
/ 21 апреля 2020

В моем java коде у меня есть два scala Seq<String> объекта, которые я хочу объединить в один Seq<String>. Я знаю, что возможно следующее:

Seq<String> seq1 = getSeq(1);
List<String> l1 = JavaConversions.seqAsJavaList(seq1);
Seq<String> seq2 = getSeq(2);
List<String> l2 = JavaConversions.seqAsJavaList(seq2);
l1.addAll(l2);
return JavaConverters.asScalaIteratorConverter(l1.iterator()).asScala().toSeq();

Но преобразование из Seq с List с обратно в Seq с очень неэффективно. Есть ли лучший способ сделать это, оставаясь в пределах кода java?

1 Ответ

2 голосов
/ 21 апреля 2020

На самом деле преобразования Java <-> Scala не являются дорогостоящими, поскольку это просто простые оболочки, которые не копируют данные.
дорогая часть - toSeq() в конце, что я считаю ненужным, не превращайте интегратор, вы можете преобразовать Java List в Scala Seq.

В любом случае вам также не нужно делать все это, вы можете просто вызвать любой из методов, предоставляемых seq: https://www.scala-lang.org/api/current/scala/collection/immutable/Seq.html

Таким образом, я уверен, что вы можете просто

seq1.concat(seq2)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...