inflearn logo
강의

Course

Instructor

Kotlin Advanced

Lesson 13. Higher-order functions and function literals

Sequence vs Stream

251

ktj79164410

17 asked

1

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

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

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

 

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

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

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

Answer 1

1

lannstark

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

 

이해해 주신 것처럼, 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 사용을 조금 더 추천드립니다.

 

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

감사합니다! 🙏

싱글턴패턴

0

1

1

KType 관련 Kotlin 2.3 변경점

1

61

2

Kotlin 2.0(K2 컴파일러)에서 달라진 Java SAM 변환 동작

2

98

3

SuperTypeSafeCage에 대해 질문드립니다

0

62

2

좋은 코드 예시

0

94

2

val 키워드도 setValue가 있나요?

0

86

2

반공변성 질문드립니다.

1

114

3

[23강] SuperTypeToken의 equals 관련 질문

1

96

2

23강 타입 안전 이종 컨테이너 예제 관련 문의 드립니다.

0

111

2

abstract class Fish(name:String):Animal(name)

0

105

2

지식공유자님 inline에 대해서의 질문과 추가적인 질문 1가지가 있습니다!

1

118

1

안녕하세요 JMH 설정 관련 팁을 드릴까 합니다! (24년 12월 16일 기준)

0

164

2

Generic Func 질문이 있습니다

1

104

1

2강부터 영상 재생이 안되네요ㅠㅠ

0

152

2

by lazy 블럭 안에서 suspend 함수의 결과값을 받는게 가능한가요?

0

389

1

DSL 만들기

0

288

1

코틀린 indent 코드 스타일 질문입니다.

0

263

1

non-local return 질문입니다.

1

227

1

SynchronizedLazyImpl 함수관련 질문

0

424

2

제네릭 클래스를 정의하는 경우, 반드시 변성을 고려하는 것이 바람직한가요?

4

1327

1

실무에서 lateinit 이 필요한 경우는 어떤 상황일까요?

1

455

1

4강 타입소거 관련 질문

1

331

2

추상클래스의 공변 / 반공변, 추상 제네릭 일급컬랙션 리팩토링 에 대한 질문입니다.

2

598

1

lateinit 키워드 관련해서 질문드립니다!

1

314

1