19

Java で Scala コレクションを反復するにはどうすればよいですか?

4

3 に答える 3

18

Scala の例

class AThing {
  @scala.reflect.BeanProperty val aList = List(1,2,3,4,99)
}

Java クライアント

public class UseAThing {
  public static void main(String a[]) {
    AThing thing = new AThing();
    scala.collection.Iterator iter = thing.getAList().iterator();
    while (iter.hasNext()) {
      System.out.println(iter.next());
    }
  }
}

出力

jem@Respect:~/c/user/jem$ java -cp /opt/scala/lib/scala-library.jar:. UseAThing
1
2
3
4
99

それは役に立ちますか?

于 2010-09-06T03:27:09.477 に答える
3

IteratorコレクションからScala を取得し、変換を使用scala.collection.JavaConversionsして Java に変換しますIterator

次に例を示します。

scala> val li1 = List(2, 3, 5, 7, 11)
li1: List[Int] = List(2, 3, 5, 7, 11)

scala> val ii1 = li1.iterator
ii1: Iterator[Int] = non-empty iterator

scala> import collection.JavaConversions._
import collection.JavaConversions._

scala> val ji1: java.util.Iterator[Int] = ii1
ji1: java.util.Iterator[Int] = IteratorWrapper(non-empty iterator)

scala> val ji2 = ii1: java.util.Iterator[Int]
ji2: java.util.Iterator[Int] = IteratorWrapper(non-empty iterator)

JavaConversionsが任意のスコープにインポートされると、任意の Scala を対応する Java に変換する暗黙の変換が行われIterator[T]ますIterator<T>。前の例では、ji1宣言の明示的な型によって、初期化子の暗黙的な変換の適用がトリガーされましたii1。このji2場合、型の帰属ii1が変換をトリガーします。

于 2010-09-06T00:21:49.550 に答える