scala - What is the difference between the methods iterator and view? -
scala> (1 10).iterator.map{_ * 2}.tolist res1: list[int] = list(2, 4, 6, 8, 10, 12, 14, 16, 18, 20) scala> (1 10).view.map{_ * 2}.force res2: seq[int] = vector(2, 4, 6, 8, 10, 12, 14, 16, 18, 20)
other using next,hasnext, when should choose iterator on view or view on iterator?
there's huge difference between iterators , views. iterators use once only, compute on demand, while views use multiple times, recompute each time, elements needed. instance:
scala> val list = list(1,2,3).map{x => println(x); x * 2} 1 2 3 list: list[int] = list(2, 4, 6) scala> list(2) res14: int = 6 scala> list(2) res15: int = 6 scala> val view = list(1,2,3).view.map{x => println(x); x * 2} view: scala.collection.seqview[int,seq[_]] = seqviewm(...) scala> view(2) 3 res12: int = 6 scala> view(2) 3 res13: int = 6 scala> val iterator = list(1,2,3).iterator.map{x => println(x); x * 2} iterator: iterator[int] = non-empty iterator scala> iterator.drop(2).next 1 2 3 res16: int = 6 scala> iterator.drop(2).next [iterator.next] (iterator.scala:29) (access lastexception full trace)
Comments
Post a Comment