In my Scala function, i’m traversing a Java ArrayCollection, extracting specific elements which should form a new collection. At the end, it has to be a Java-ArrayList again, because i’m interacting with a Java Framework.
My Code:
// to make scala-style iterating over arraylist possible
import scala.collection.JavaConversions._
// ArrayList contains elements of this type:
class Subscription(val subscriber:User, val sender:User)
// I'm getting this list from Java:
val jArrayList = new ArrayList[Subscription]
// Buffer:scala.collection.mutable.Buffer[User]
val buffer = for (val subscription <- jArrayList ) yield subscription.sender
How can i convert the Buffer to an ArrayList[User]? Or shouldn’t i use yield here?
You should be able to convert it back by specifying what type you’d like
bufferto be (JavaConversionsshould be brought into play automatically when the type you’re trying to get and the one you have are incompatible):Alternatively you can call the conversion from
JavaConversionsexplicitly if you want to make it clear what you’re doing:Neither of these actually produce an
ArrayList; rather, they create a genericList, but it’s generally bad practice to specify collection types directly. If you must have anArrayList, pass yourListto the constructor ofArrayListwhich takes aCollection: