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...