inflearn logo
강의

Khóa học

Chia sẻ kiến thức

Kotlin Nâng cao

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

Sequence vs Stream

251

ktj79164410

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

1

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

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

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

 

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

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

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

Câu trả lời 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

7

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

153

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