[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.반복자 및 뷰 사이에 큰 차이가있다. 반복자는 전망이있는 동안 여러 번 사용할 때마다 다시 계산 있지만 요소가 필요, 한 번만 사용, 필요에 따라 계산합니다. 예를 들어 :
반복자 및 뷰 사이에 큰 차이가있다. 반복자는 전망이있는 동안 여러 번 사용할 때마다 다시 계산 있지만 요소가 필요, 한 번만 사용, 필요에 따라 계산합니다. 예를 들어 :
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.보기는 게으른 수집 / 스트림을 생성한다. 그것은의 주요 매력은 시도하고 전체 수집을 구축 할 것입니다. 이것은 OutOfMemoryError를 방지하거나 만 컬렉션의 첫 번째 몇 가지 항목을 필요로 할 때 성능을 향상시킬 수 있습니다. 반복자는 그러한 보증을하지 않습니다.
보기는 게으른 수집 / 스트림을 생성한다. 그것은의 주요 매력은 시도하고 전체 수집을 구축 할 것입니다. 이것은 OutOfMemoryError를 방지하거나 만 컬렉션의 첫 번째 몇 가지 항목을 필요로 할 때 성능을 향상시킬 수 있습니다. 반복자는 그러한 보증을하지 않습니다.
하나 더. 당신이 돌아가거나 처음부터 다시 시작하고 모든 재미 sequency 물건을 할 수 있도록 범위에 적어도,보기, 서열의 하위 유형 인 SeqView을 반환합니다.
나는 반복자와보기의 차이는 앞과 뒤에의 문제 같아요. 반복자는 볼 된 내용을 발표 할 것으로 예상된다. 일단 다음 이전 IS는, 희망, 가자,라고하고있다. 뷰는 그 반대입니다. 그들은 요청하지 않은 것을 획득 할 것을 약속드립니다. 모든 소수, 무한 집합의 뷰가있는 경우, 그것은 단지 당신이 요구 한 그 소수를 인수했다. 그것은 당신이 101 아직 메모리를 복용해서는 안, 100 번째를 원했다.
-
==============================
3.이 페이지는보기를 사용하는 경우에 대해 이야기합니다.
이 페이지는보기를 사용하는 경우에 대해 이야기합니다.
from https://stackoverflow.com/questions/4798043/what-is-the-difference-between-the-methods-iterator-and-view by cc-by-sa and MIT license
'SCALA' 카테고리의 다른 글
[SCALA] Implicits와 스칼라 기능 리터럴 (0) | 2019.11.20 |
---|---|
[SCALA] 동시성 가시성 발 대 스칼라 최종 (0) | 2019.11.20 |
[SCALA] 스칼라 열거 값을 재정의 (0) | 2019.11.20 |
[SCALA] 목록의 하나에 Eithers의 목록을 설정하는 가장 좋은 방법은? (0) | 2019.11.20 |
[SCALA] 왜 케이스 클래스 동반자 개체는 기능을 확장 할 수 있습니까? (0) | 2019.11.20 |