복붙노트

[SCALA] 스칼라에서 반복자 및 스트림의 차이?

SCALA

스칼라에서 반복자 및 스트림의 차이?

이 반복자 및 스트림 모두 게으른 당신이 당신의 마음의 콘텐츠에 요소를 반환 유지 할 수 있도록 보인다. 둘 사이의 차이점은 무엇입니까?

해결법

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

    1.memoises 스트림 및 반복자하지 않습니다. 동일한 스트림을 여러 번 통과하고 매 x 같은 결과를 얻을 수 있습니다. 반복자는, 다른 한편으로는, 한 번만 통과 할 수 있습니다.

    memoises 스트림 및 반복자하지 않습니다. 동일한 스트림을 여러 번 통과하고 매 x 같은 결과를 얻을 수 있습니다. 반복자는, 다른 한편으로는, 한 번만 통과 할 수 있습니다.

  2. ==============================

    2.이들은 현재 요소 액세스 나머지 요소 (게으른 테일)을 아직 알 수없는리스트를 모두 갖는 구조이다.

    이들은 현재 요소 액세스 나머지 요소 (게으른 테일)을 아직 알 수없는리스트를 모두 갖는 구조이다.

    반복자는 한 번만 통과 할 수있는 긴급 구조입니다.

    스트림 기능 구조이다. 이론적으로 당신이 그것을 여러 번 통과 할 수 있습니다 (다른 사람이 언급 한 바와 같이, 그것은 이미 계산 된 부분을 다시 계산하지 않습니다) 스트림이 (당신이 먼저 그것을 사용하는 이유입니다)하거나 무한하거나 매우 크기 때문에,하지만, 실제로 개최 전체 스트림에 대한 참조는 많은 의미를 (당신은 아주 쉽게 메모리 부족으로 실행)하지 않습니다.

    일반적으로는 일반 스트림 피하기 마음에 안전합니다. 대안은 약한 참조를 사용 Scalaz의하는 자동 잊어 unreferred 부품을 EphemeralStream를 사용하거나 Iteratees를 사용하고 (여기 참조) 또는 뭔가 비슷한.

  3. from https://stackoverflow.com/questions/1527962/difference-between-iterator-and-stream-in-scala by cc-by-sa and MIT license