How to create a scala.collection.immutable.Seq from a Java List in Java?
26,407
Solution 1
You can use scala.collection.JavaConversions.asScalaBuffer
to convert the Java List
to a Scala Buffer
, which has a toList
method, and a Scala List
is a collection.immutable.Seq
.
Solution 2
The akka Java documentation for routers as well as the ScalaDoc for CyclicIterator both suggest that the CyclicIterator constructor takes a List.
Solution 3
You can use:
scala.collection.JavaConverters.collectionAsScalaIterableConverter(workers).asScala().toSeq()
Solution 4
You can try this:
scala.collection.JavaConverters.asScalaIteratorConverter(list.iterator()).asScala().toSeq();
Author by
spieden
Updated on November 07, 2020Comments
-
spieden over 3 years
I'm trying to get Akka going in my Java project, and I'm hung up on a small issue with the Seq type(s) from Scala. I'm able to convert my Java List of ActorRef into a scala.collection.Seq, but the Akka API I'm trying to use requires a scala.collection.immutable.Seq. How can I make one?
Code:
static class Router extends UntypedLoadBalancer { private final InfiniteIterator<ActorRef> workers; public Router(List<ActorRef> workers) { Seq workerSeq = asScalaBuffer(workers); // how to get from the scala.collection.Seq above to the instance of // scala.collection.immutable.Seq required by CyclicIterator below? this.workers = new CyclicIterator<ActorRef>(); } public InfiniteIterator<ActorRef> seq() { return workers; } }