developer tip

Scala에서 Iterator와 Stream의 차이점은 무엇입니까?

copycodes 2020. 12. 31. 22:16
반응형

Scala에서 Iterator와 Stream의 차이점은 무엇입니까?


Iterator와 Stream 모두 게으르고 요소를 마음의 내용으로 계속 반환 할 수있는 것 같습니다. 둘의 차이점은 무엇입니까?


스트림 메모 와 반복자는 그렇지 않습니다. 동일한 스트림을 여러 번 탐색하고 매번 동일한 결과를 얻을 수 있습니다. 반면 반복자는 한 번만 순회 할 수 있습니다.


둘 다 현재 요소에 액세스하기위한 구성이며 아직 알려지지 않은 나머지 요소 목록 (게으른 꼬리)을 가지고 있습니다.

Iterator 한 번만 이동할 수있는 명령형 구조입니다.

Stream기능적 구조입니다. 이론적으로는 여러 번 탐색 할 수 있지만 (다른 사람들이 언급했듯이 이미 계산 된 부분을 다시 계산하지 않음) 실제로 Streams가 무한하거나 매우 크기 때문에 (그래서 처음에 사용하는 것입니다) 전체 스트림에 대한 참조는 그다지 의미가 없습니다 (메모리 부족에 부딪히기 쉽습니다).

일반적으로 평범한 Streams 를 피하는 것이 마음에 더 안전합니다 . 대안은 EphemeralStream약한 참조를 사용하여 참조되지 않은 부분을 자동으로 잊어 버리는 Scalaz를 사용하거나 반복 ( 여기 참조 ) 또는 유사한 것을 사용하는 것 입니다.

참조 URL : https://stackoverflow.com/questions/1527962/difference-between-iterator-and-stream-in-scala

반응형