Collection, Sequence - 1
Collection, Sequence - 2
๐ ์ด ๊ธ์์ ์ด์ด์ง๋ ๋ง์ง๋ง ๊ธ ์ ๋๋ค!
์ ๊ธ์์ Collection, Sequence์ ํน์ง ๋ฐ ๋์์ ๋ค๋ค๊ณ ์ด ๊ธ์์๋ ์ด๋ฐ ํน์ง, ๋์์ผ๋ก ๊ฐ๊ฒ ๋๋ Sequence์ ์ฅ์ ์ ๋ค๋ฃฐ๊ฒ์ฉ
๋ณดํต ๊ตฌํ ์ for๋ฌธ๊ณผ ๊ฐ์ ๋ฐ๋ณต๋ฌธ์ ์ฌ์ฉํ๋๋ฐ Sequence์ ๋์ ๋ฐฉ์์ด ๊ทธ ๋ฐ๋ณต๋ฌธ ๋์์์(element-by-element)์ ์ ์ฌํด์ ๋ ์์ฐ์ค๋ฝ๋ค๊ณ ๋๋ (== Natural order)
element-by-element ๋ฐฉ์์ผ๋ก ์งํํ๋ค๊ฐ terminal ์ฐ์ฐ ์กฐ๊ฑด์ ๋ง์กฑํ๋ฉด ์ดํ ์์์ ๋ํด ์ฐ์ฐ์ ์งํํ์ง ์์!
Sequence๋ ํ์์ ์ํด ์๋ํ๋ฏ๋ก ๋ฌดํํ ์ํ์ค๋ฅผ ๊ฐ์ง ์ ์์
+) ๋ฌดํํ ์ํ์ค ๋ง๋ค๊ธฐ
-> sequence generator ์ฌ์ฉ
generateSequence(1) {it + 1} // ์ฒซ๋ฒ์งธ์์์ ๋ค์ ์์๋ฅผ ๊ตฌํ๋ ํจ์ ํ์
.map {it * 2}
.take(10) // ์์๋ฅผ ์ ํํ๊ธฐ ์ํด take์ ๊ฐ์ terminal ์ฐ์ฐ ํ์
.forEach { print("$it, ") }
// Prints: 2, 4, 6, 8, 10, 12, 14, 16, 18, 20,
๋ชจ๋ ์ฐ์ฐ์ ๋ํด ์๋ก์ด ๋ฆฌ์คํธ๋ฅผ ์์ฑํ๋ Collection๊ณผ ๋ฌ๋ฆฌ, Sequence๋ ์ฐ์ฐ์ ๋ํ ์ฐธ์กฐ๋ง ์ ์ง!!
1-2๊ฐ์ง์ ์ฐ์ฐ์ ๊ฐ์ง Collection์ด๋ผ๋ฉด ํฐ ์ฐจ์ด๋ฅผ ๊ฐ์ง ์์ง๋ง ํฌ๊ธฐ๊ฐ ํฌ๊ฑฐ๋ ์ฐ์ฐ์ด ๋ง์ผ๋ฉด intermediate collection์ ์์ฑ์ ํฐ ์ํฅ์ ๋ผ์น ์ ์์! (์ค๋ฒํค๋)
๋ชจ๋ ๊ฒฝ์ฐ์ Sequence๊ฐ ๋ต์ธ๊ฑด ์๋๋ฏธ๋ค.
ex. sorted() ์ฌ์ฉ ์
ํ ๋๋์ด ์ด ์๋ฆฌ์ฆ๊ฐ ๋๋ฌ์ต๋๋ค.
https://medium.com/androiddevelopers/collections-and-sequences-in-kotlin-55db18283aca