복붙노트

[SCALA] 방법 반복자와보기의 차이점은 무엇입니까?

SCALA

방법 반복자와보기의 차이점은 무엇입니까?

scala> (1 to 10).iterator.map{_ * 2}.toList
res1: List[Int] = List(2, 4, 6, 8, 10, 12, 14, 16, 18, 20)

scala> (1 to 10).view.map{_ * 2}.force
res2: Seq[Int] = Vector(2, 4, 6, 8, 10, 12, 14, 16, 18, 20)

다음 hasNext를 사용하는 것보다 다른, 때 나는 반복자보기 또는보기를 통해 반복자를 선택해야합니까?

해결법

  1. ==============================

    1.반복자 및 뷰 사이에 큰 차이가있다. 반복자는 전망이있는 동안 여러 번 사용할 때마다 다시 계산 있지만 요소가 필요, 한 번만 사용, 필요에 따라 계산합니다. 예를 들어 :

    반복자 및 뷰 사이에 큰 차이가있다. 반복자는 전망이있는 동안 여러 번 사용할 때마다 다시 계산 있지만 요소가 필요, 한 번만 사용, 필요에 따라 계산합니다. 예를 들어 :

    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 for the full trace)
    
  2. ==============================

    2.보기는 게으른 수집 / 스트림을 생성한다. 그것은의 주요 매력은 시도하고 전체 수집을 구축 할 것입니다. 이것은 OutOfMemoryError를 방지하거나 만 컬렉션의 첫 번째 몇 가지 항목을 필요로 할 때 성능을 향상시킬 수 있습니다. 반복자는 그러한 보증을하지 않습니다.

    보기는 게으른 수집 / 스트림을 생성한다. 그것은의 주요 매력은 시도하고 전체 수집을 구축 할 것입니다. 이것은 OutOfMemoryError를 방지하거나 만 컬렉션의 첫 번째 몇 가지 항목을 필요로 할 때 성능을 향상시킬 수 있습니다. 반복자는 그러한 보증을하지 않습니다.

    하나 더. 당신이 돌아가거나 처음부터 다시 시작하고 모든 재미 sequency 물건을 할 수 있도록 범위에 적어도,보기, 서열의 하위 유형 인 SeqView을 반환합니다.

    나는 반복자와보기의 차이는 앞과 뒤에의 문제 같아요. 반복자는 볼 된 내용을 발표 할 것으로 예상된다. 일단 다음 이전 IS는, 희망, 가자,라고하고있다. 뷰는 그 반대입니다. 그들은 요청하지 않은 것을 획득 할 것을 약속드립니다. 모든 소수, 무한 집합의 뷰가있는 경우, 그것은 단지 당신이 요구 한 그 소수를 인수했다. 그것은 당신이 101 아직 메모리를 복용해서는 안, 100 번째를 원했다.

  3. ==============================

    3.이 페이지는보기를 사용하는 경우에 대해 이야기합니다.

    이 페이지는보기를 사용하는 경우에 대해 이야기합니다.

  4. from https://stackoverflow.com/questions/4798043/what-is-the-difference-between-the-methods-iterator-and-view by cc-by-sa and MIT license