이 코드는 코틀린 알고리즘에 반복해 나타나는 주제를 보여 준다. 무언가를 더 타당하고 효율
적인 방법으로 구현하기 위해 변이를 사용할 필요가 가끔 있다. 이런 경우 보통은 변이의 가시
성을 줄이고 더 유용한 추상화를 제공할 수 있는 방향으로 변이를 사용하는 코드를 감춘다. 여
기서는
Sequence
가 실제로는 메서드가 단 하나만 정의된 인터페이스라서 직접 그 유일한 메
서드를 구현하기 쉽다는 점으로부터 도움을 받는다. 자바
Stream
도 인터페이스지만
42
개나
되는 메서드가 들어있고 디폴트 구현을 제공할 만한
AbstractStream
클래스가 존재하지도
않는다!
이번 절을 끝내기 전에, 어쩌면 우리가
Stream
.
count
()
를 도입했을 때 조용히 화를 낸 독자
도 있을 것이다. 화를 내지 않은 독자라면 문제가 무엇일까 생각해 보라.
Stream
과
Sequence
의 핵심은 이들이 크기가 정해져 있지 않은 큰 데이터집합을 다룰 수 있
게 해 준다는 점에 있다. 그런데 이런 데이터 집합의 원소 개수를 하나하나 세서 전체 크기를
알아내는 과정은 그리 효율적이지 못하다. 게다가 항상 개수를 셀 수 있는 것도 아니다. 보통
Sequence
를 한 번 이상 이터레이션할 수 있는 경우라 해도 실제로는 애초에 우리가
Sequence
를 사용해야만
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month, and much more.