42
A
回答
65
在斯卡拉2.8這個多了容易得多,而且有兩種方法來實現它。一說是那種明確的(儘管它使用 implicits):
import scala.collection.JavaConverters._
val myJavaIterable = someExpr()
val myScalaIterable = myJavaIterable.asScala
編輯:自從我寫了這個,斯卡拉社區已經到達達成廣泛共識,JavaConverters
好,JavaConversions
是不好的,因爲恐怖行爲的可能性。所以根本不要使用JavaConversions
!
,另一種更像是一個隱含的隱::)
import scala.collection.JavaConversions._
val myJavaIterable = someExpr()
for (magicValue <- myJavaIterable) yield doStuffWith(magicValue)
11
是使用隱轉換:
import java.lang.{Iterable => JavaItb}
import java.util.{Iterator => JavaItr}
implicit def jitb2sitb[T](jit: JavaItb[T]): Iterable[T] = new SJIterable(jit);
implicit def jitr2sitr[A](jit: JavaItr[A]): Iterator[A] = new SJIterator(jit)
然後可以很容易地實現:
class SJIterable[T](private val jitb: JavaItr[T]) extends Iterable[T] {
def elements(): Iterator[T] = jitb.iterator()
}
class SJIterator[T](private val jit: JavaItr[T]) extends Iterator[T] {
def hasNext: Boolean = jit hasNext
def next: T = jit next
}
相關問題
- 1. 將Java Array轉換爲Iterable
- 2. 如何將Iterable [Try [U]]過濾器成功轉換爲Iterable [U]?
- 3. 將iterable轉換爲RDD
- 4. Scala:通過謂詞將Iterable組合成一個Iterable Iterable
- 5. 如何將數據集轉換爲Scala Iterable?
- 6. Scala Iterable Memory Leaks
- 7. 爲什麼Iterable <DeclarationMirror>不能轉換爲Iterable <MethodMirror>?
- 8. 組合Scala選項[Iterable [_]]
- 9. 如何將Iterable <com.datastax.driver.core.Row>轉換爲數據集?
- 10. 如何轉換Iterator <?將Person>擴展爲Iterable?
- 11. Spark:如何將RDD [(Long,Iterable [String])]轉換爲RDD [(Long,String)]?
- 12. 如何實現Iterable
- 13. MapStruct:嵌套Iterable到非Iterable映射?
- 14. Flattable a Iterable <Iterable<T>> Guava
- 15. Iterable Floats?
- 16. Iterable <String> to Iterable <T>
- 17. 實現Iterable
- 18. 將Iterable <T>轉換爲T []的可重用方法?
- 19. 將Iterable轉換爲javascript/typescript中的列表
- 20. python namedtuple T._make(iterable)vs T(* iterable)
- 21. Iterable with size() - 在Iterable和Collection之間?
- 22. 是否可以提供從Iterable [T]到Iterable [U]的隱式轉換?
- 23. 使用帶有scala泛型的Iterable
- 24. Scala Iterable和IterableLike的區別和用法
- 25. Java中的Iterable的實現
- 26. Iterable&Iterator實現問題(JAVA)
- 27. PHP - Iterable Object Issue
- 28. 如何實現Iterable接口?
- 29. 如何將DataFrame轉換爲Iterable(並用值填充Zeppelin複選框)?
- 30. org.w3c.dom.NodeList不擴展Iterable
謝謝你,我希望有這樣的事情在標準Scala庫,但你」已經證明,推出自己的產品並不難。 – 2009-07-02 10:20:16