Ing*_*her 8 java scala scala-2.8
在我的Scala函数中,我遍历Java ArrayCollection,提取应该构成新集合的特定元素.最后,它必须再次成为Java-ArrayList,因为我正在与Java Framework交互.我的代码:
// 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
Run Code Online (Sandbox Code Playgroud)
如何将Buffer转换为ArrayList [User]?或者我不应该在这里使用收益率?
您应该能够通过指定您想要的类型来将其转换回来buffer(JavaConversions当您尝试获取的类型与您所拥有的类型不兼容时,应该自动启用它):
val buffer: java.util.List[User] =
for (val subscription <- jArrayList ) yield subscription.sender
Run Code Online (Sandbox Code Playgroud)
或者,JavaConversions如果您想清楚地知道自己在做什么,可以明确地调用转换:
val buffer = asList( for ( ... ) ) // buffer should have type "java.util.List[User]"
Run Code Online (Sandbox Code Playgroud)
这些都没有实际产生ArrayList; 相反,它们创建了一个泛型List,但直接指定集合类型通常是不好的做法.如果你必须有一个ArrayList,你传递List给的构造函数ArrayList,这需要Collection:
new ArrayList( buffer )
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6301 次 |
| 最近记录: |