강의

멘토링

커뮤니티

Cộng đồng Hỏi & Đáp của Inflearn

Hình ảnh hồ sơ của ktj79164410
ktj79164410

câu hỏi đã được viết

Kotlin Nâng cao

Bài học 13. Hàm bậc cao hơn và chữ hàm

Sequence vs Stream

Viết

·

247

1

안녕하세요
Sequence와 Stream의 차이점에 대해서 질문드립니다.

Sequence가 지연연산의 이점을 통해서

대용량 처리를 해야할 때 이점을 줄 수 있다고 이해를 했고,
Java의Stream과 유사하다는 생각이 들었습니다.

 

찾아보니, java8 이전의 Kotlin의 경우 Stream을 사용할 수 없으니, Sequence를 사용했었다 라는 글을 발견했습니다.

위 설명이 맞을까요?
혹시 맞다면 어떠한 기준으로 둘중에서 선택을 하는게 좋을까요?

kotlin함수형-프로그래밍객체지향

Câu trả lời 1

1

lannstark님의 프로필 이미지
lannstark
Người chia sẻ kiến thức

안녕하세요 태준님! 🙂 좋은 질문 주셔서 감사합니다. 👍

 

이해해 주신 것처럼, Sequence 는 지연 연산의 이점을 통해 대용량 처리를 할 때 유용하게 쓸 수 있고, 이는 자바의 Stream 도 마찬가지입니다. Stream 역시 지연 연산 방식으로 동작하죠.

 

찾아보니, java8 이전의 Kotlin의 경우 Stream을 사용할 수 없으니, Sequence를 사용했었다 라는 글을 발견했습니다.

로 찾아주신 설명은 맞습니다. 그 이유는, 자바의 Stream 자체가 자바 8 에서 등장했기 때문입니다. 코틀린은 JDK 버전을 비교적 자유롭게 선택해 사용할 수 있다보니, 만약 코틀린을 JDK 1.8 미만의 버전과 사용한다면, Stream 은 사용할 수 없는 것이 맞습니다.

 

만약 JDK 1.8 (자바 8 버전) 이상의 환경에서 Kotlin을 사용하신다면, Stream을 사용할 수도 있고, Sequence도 사용할 수 있습니다! 저 개인적으로는 Kotlin을 사용할 경우 Stream 보다는 Sequence 를 선호하는데요! 그 이유는, Kotlin으로 만들어진 Sequence 는 내부적으로 inline 함수 등을 사용해 함수형 프로그래밍을 할 때 필요한 최적화를 해두었기 때문입니다. 반면, Stream 의 경우 100% Java 코드로 만들어졌기 때문에 코틀린을 고려한 최적화가 되어 있지는 않죠. 따라서 Sequence 사용을 조금 더 추천드립니다.

 

답변이 도움이 되었으면 좋겠습니다.

감사합니다! 🙏

Hình ảnh hồ sơ của ktj79164410
ktj79164410

câu hỏi đã được viết

Đặt câu hỏi