๐ฑ dreaming DiNO
[Kotlin] ์ปฌ๋ ์ API : filter, map, all, any, count, find, groupBy, flatMap, flatten ๋ณธ๋ฌธ
[Kotlin] ์ปฌ๋ ์ API : filter, map, all, any, count, find, groupBy, flatMap, flatten
MK_____ 2021. 12. 27. 12:52๋๋ค ํจ์ํ ํ๋ก๊ทธ๋๋ฐ์ ์ปฌ๋ ์ (Collection)์ ๋ค๋ฃฐ ๋ ์๋นํ ํธ๋ฆฌํ๊ณ ๋ง๊ฐํฉ๋๋ค.
๋๋ถ๋ถ์ ์์ ์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ํจ์๋ฅผ ํ์ฉํ ์ ์๊ณ , ๊ทธ๋ก ์ธํด ์ฝ๋๋ฅผ ์์ฃผ ๊ฐ๊ฒฐํ๊ฒ ๋ง๋ค ์ ์์ต๋๋ค.
๊ทธ๋ฌ๋ฏ๋ก ์ด๋ฒ์๋, ์ปฌ๋ ์ ์ ๋ค๋ฃจ๋ ์ฝํ๋ฆฐ ํ์ค ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ค์ ์ดํด๋ณด๋๋ก ํ๊ฒ ์ต๋๋ค.
์ฐธ๊ณ ๋ก, ์ฝํ๋ฆฐ์์ ์ ๊ณตํ๋ ์ปฌ๋ ์ API๋ ์๋กญ๊ฒ ์ถ๊ฐ๋ ๊ฒ์ด ์๋, ๊ธฐ์กด์ java, C#, ๊ทธ๋ฃจ๋น, ์ค์นผ๋ผ ๋ฑ ๋๋ค๋ฅผ ์ง์ํ๋ ๋๋ถ๋ถ์ ์ธ์ด์์ ์ฌ์ฉํ๋ ๊ฒ๋ค๊ณผ ๋์ผํฉ๋๋ค.
ํ์์ ์ธ ํจ์ : filter, map
filter์ map์ ์ปฌ๋ ์ ์ ํ์ฉํ ๋ ๊ธฐ๋ฐ์ด ๋๋ ํจ์๋ก, ๋๋ถ๋ถ์ ์ปฌ๋ ์ ์ฐ์ฐ์ ์ด ๋ ํจ์๋ฅผ ํตํด ํํํ ์ ์์ต๋๋ค.
filter
filter ํจ์๋ ์ปฌ๋ ์ ์ iteration ํ๋ฉด์ ์ฃผ์ด์ง ๋๋ค์ ๊ฐ ์์๋ฅผ ๋๊ฒจ์ ๋๋ค๊ฐ true๋ฅผ ๋ฐํํ๋(์กฐ๊ฑด์ ๋ง๋) ์์๋ง ํํฐ๋งํ๋ ๊ธฐ๋ฅ์ ํฉ๋๋ค.
filter์ ๊ฒฐ๊ณผ๋, ์ ๋ ฅ ์ปฌ๋ ์ ์ ์์ ์ค์์ ์ฃผ์ด์ง ์กฐ๊ฑด๋ฌธ์ ๋ง์กฑํ๋ ์์๋ง์ผ๋ก ์ด๋ฃจ์ด์ง ์๋ก์ด ์ปฌ๋ ์ ์ ๋๋ค.
/* ๋ฆฌ์คํธ์์ ์ง์๋ง ๋ฝ์๋ด๋ ์์ */
>>> val list = listOf(1, 2, 3, 4)
>>> println(list.filter { it % 2 == 0 }) //์ง์๋ง ํํฐ๋ง
[2, 4]
๊ทธ๋ฆผ์ผ๋ก ํํํ์๋ฉด ์๋์ ๊ฐ์ต๋๋ค.
filter ํจ์๋ ์กฐ๊ฑด์ ๋ง์กฑํ๋ ๋ชจ๋ ์์๋ก๋ง ์ด๋ฃจ์ด์ง ์๋ก์ด ์ปฌ๋ ์ ์ ๋๋ค.
๋ค๋ฅธ ์์ ๋ก, ๋์ด๊ฐ 30์ด ์ด์์ธ ์ฌ๋๋ง ์ถ๋ ค๋ด๊ธฐ ์ํด์ filter๋ฅผ ์ฌ์ฉํด๋ณด์์ต๋๋ค.
/* ๋์ด๊ฐ 30์ด ์ด์์ธ ์ฌ๋๋ง ๋ฝ์๋ด๋ ์์ */
>>> val people = listOf(Person("์๋๋ก์ด๋", 29), Person("์ฝํ๋ฆฐ", 30))
>>> println(people.filter { it.age >= 30 })
[Person(name=์ฝํ๋ฆฐ, age=30)]
์ด๋ ๋ฏ, filter ํจ์๋ ์ปฌ๋ ์ ์์ ์์น ์๋ ์์๋ค์ ์ ๊ฑฐํด์ค ์ ์์ต๋๋ค.
ํ์ง๋ง, filter๋ ์์๋ฅผ ๋ณํํ ์๋ ์์ต๋๋ค. ์์๋ฅผ ๋ณํํ๊ธฐ ์ํด์๋ map ํจ์๋ฅผ ์ฌ์ฉํด์ผ ํฉ๋๋ค.
map
map ํจ์๋ ๊ฐ ์์๋ฅผ ์ํ๋ ํํ๋ก ๋ณํํ๋ ๊ธฐ๋ฅ์ ํ๋ฉฐ, ๋ณํํ ๊ฒฐ๊ณผ๋ฅผ ๋ชจ์์ ์ ์ปฌ๋ ์ ์ ๋ง๋ญ๋๋ค.
๊ฒฐ๊ณผ๋ ์๋ณธ ๋ฆฌ์คํธ์ ์์ ๊ฐ์๋ ๊ฐ์ง๋ง, ๊ฐ ์์๋ ์ฃผ์ด์ง ๋๋ค(ํจ์)์ ๋ฐ๋ผ ๋ณํ๋ ์๋ก์ด ์ปฌ๋ ์ ์ ๋๋ค.
/* ๊ฐ ์์์ ์ ๊ณฑ์ผ๋ก ๋ชจ์ธ ๋ฆฌ์คํธ๋ฅผ ๋ง๋๋ map ์์ */
>>> val list = listOf(1, 2, 3, 4)
>>> println(list.map { it * it }) //์ ๊ณฑ ๋ง๋ค๊ธฐ (1x1, 2x2, 3x3, 4x4)
[1, 4, 9, 16]
map ํจ์๋ ๋๋ค๋ฅผ ์ปฌ๋ ์ ์ ๋ชจ๋ ์์์ ์ ์ฉํ ๊ฒฐ๊ณผ๋ก ์ด๋ฃจ์ด์ง ์๋ก์ด ์ปฌ๋ ์ ์ ๋๋ค.
์๋ก, ์ฌ๋ ๋ฆฌ์คํธ๊ฐ ์๋ ์ด๋ฆ ๋ฆฌ์คํธ๋ฅผ ์ถ๋ ฅํ๊ณ ์ถ๋ค๋ฉด map์ผ๋ก ์ฌ๋ ๋ฆฌ์คํธ๋ฅผ ์ด๋ฆ ๋ฆฌ์คํธ๋ก ๋ณํํ๋ฉด ๋ฉ๋๋ค.
/* ์ฌ๋ ๋ฆฌ์คํธ -> ์ด๋ฆ ๋ฆฌ์คํธ ๋ณํ ์์ */
>>> val people = listOf(Person("์๋๋ก์ด๋", 29), Person("์ฝํ๋ฆฐ", 30))
>>> println(people.map { it.name })
[์๋๋ก์ด๋, ์ฝํ๋ฆฐ]
์ด ์์ ๋ฅผ ๋๋ค์ ๋ฉค๋ฒ ์ฐธ์กฐ๋ฅผ ์ฌ์ฉํด์ ๋ ๋ฉ์ง๊ฒ ์์ฑํ ์๋ ์์ต๋๋ค.
/* ๋ฉค๋ฒ ์ฐธ์กฐ ๋ฌธ๋ฒ */
people.map(Person::name)
์ด์ ์ฐ๋ฆฌ๋ ์ด๋ฐ ํจ์๋ค์ ์ฐ์์์ผ์, ์ํ๋ ๊ฒฐ๊ณผ๋ฅผ ์ฝ๊ฒ ์ป์ด๋ผ ์ ์์ต๋๋ค!
์๋ฅผ ๋ค์ด, 30์ด ์ด์์ธ ์ฌ๋์ ์ด๋ฆ์ ์ถ๋ ฅํ๋ ค๋ ๊ฒฝ์ฐ
>>> people.filter { it.age >= 30 }.map(Person::name)
[์ฝํ๋ฆฐ]
์ด์ ๊ฐ์ด, ์ปฌ๋ ์ ํจ์๋ฅผ ์ฐ์์์ผ ์์ฃผ ์ฝ๊ฒ ์ํ๋ ๊ฒฐ๊ณผ๋ฅผ ์ป์ด๋ด์์ต๋๋ค!
๊ทธ๋ ๋ค๋ฉด, ์ด์ ๋ฆฌ์คํธ์์ ๊ฐ์ฅ ๋์ด ๋ง์ ์ฌ๋์ ์ด๋ฆ์ ์๊ณ ์ถ๋ค๊ณ ๊ฐ์ ํ๊ฒ ์ต๋๋ค.
์~๋จผ์ ์ฌ๋ ๋ฆฌ์คํธ์ ๋์ด ์ต๋๊ฐ์ ๊ตฌํ๊ณ , ๊ทธ ์ต๋๊ฐ๊ณผ ๋์ด๊ฐ ๊ฐ์ ์ฌ๋์ ๋ฐํํ๋ฉด ๋๊ฒ ์ฃ ?
๋๋ค๋ฅผ ์ฌ์ฉํ๋ฉด ์ด๋ฐ ์ฝ๋๋ฅผ ์ฝ๊ฒ ์์ฑํ ์ ์์ต๋๋ค.
/* filter '๋ด๋ถ'์์ maxBy ์ด์ฉ [๋นํจ์จ์ ์ฝ๋] */
people.filter { it.age == people.maxBy(Person::age)!!.age }
/* filter '์ธ๋ถ'์์ maxBy ์ด์ฉ [ํจ์จ์ ์ฝ๋] */
val maxAge = people.maxBy(Person::age)!!.age
people.filter { it.age == maxAge }
์ฒซ ๋ฒ์งธ ์ฝ๋๋ filter ์์์ ์ต๋๊ฐ ๊ตฌํ๋ ์์ ์ ๊ณ์ ๋ฐ๋ณตํ๊ธฐ ๋๋ฌธ์, ๋ง์ฝ 100๋ช ์ ๋ฆฌ์คํธ๊ฐ ์๋ค๋ฉด filter๋ฅผ ๋๋ฉด์ 100๋ฒ ์ต๋๊ฐ ์ฐ์ฐ์ ์ํํ๊ธฐ ๋๋ฌธ์ ์๋นํ ๋นํจ์จ์ ์ ๋๋ค.
๊ทธ์ ๋นํด, ๋ ๋ฒ์งธ ์ฝ๋๋ ์ต๋๊ฐ์ ํ ๋ฒ๋ง ๊ณ์ฐํ๊ฒ ๋ง๋ ์ฝ๋์ด๊ธฐ ๋๋ฌธ์ ํจ์ฌ ๋ ๊ฐ์ ๋๊ณ ํจ์จ์ ์ธ ์ฝ๋๋ผ๊ณ ํ ์ ์์ต๋๋ค.
๋ฐ๋ผ์, ๋ฌด์์ ์ฝ๋๋์ ์ค์ด๋ ค๊ณ ์ฌ์ฉํ๊ธฐ๋ณด๋ค๋, ๋ถํ์ํ ๋ฐ๋ณต์ด ์๋์ง ๋ฑ... ๋ด๋ถ์ ์ธ ๋์์ ๋ํด์ ๊ณ ๋ คํ ํ์ ์ฝ๋๋ฅผ ์์ฑํ์๋ ๊ฒ ๋ ์ข์ ์ฝ๋๊ฐ ๋ ์ ์์ ๊ฒ ๊ฐ์ต๋๋ค. ^^
filter์ map ํจ์๋ฅผ Map(Key, Value) ์๋ ์ ์ฉํ ์ ์์ต๋๋ค.
Map(Key, Value)์ ๊ฒฝ์ฐ ํค์ ๊ฐ์ ์ฒ๋ฆฌํ๋ ํจ์๊ฐ ๋ฐ๋ก ์กด์ฌํฉ๋๋ค.
- Key ์ถ์ถ : filterKeys, mapKeys
- Value ์ถ์ถ : filterValues, mapValues
>>> val numbers = mapOf(0 to "zero", 1 to "one")
>>> println(numbers.mapValues { it.value.toUpperCase() }) //๊ฐ์ ๋๋ฌธ์๋ก ๋ณํ
{0=ZERO, 1=ONE}
all, any, count, find : ์ปฌ๋ ์ ์กฐ๊ฑด ํจ์
์ปฌ๋ ์ ์ ๋ํด ์์ฃผ ์ํํ๋ ์กฐ๊ฑด ํจ์๋ค์ ๋ํด์ ์ดํด๋ณด๋๋ก ํ๊ฒ ์ต๋๋ค.
api | description | return type |
all | ์ปฌ๋ ์ ์ ๋ชจ๋ ์์๊ฐ ์กฐ๊ฑด์ ๋ง์กฑํ๋์ง ํ๋จ | Boolean |
any | ์ปฌ๋ ์ ์ ์์ ์ค์, ์กฐ๊ฑด์ ๋ง์กฑํ๋ ์์๊ฐ ํ๋๋ผ๋ ์๋์ง ํ๋จ | Boolean |
count | ์กฐ๊ฑด์ ๋ง์กฑํ๋ ์์์ ๊ฐ์๋ฅผ ๋ฐํ | Int |
find | ์กฐ๊ฑด์ ๋ง์กฑํ๋ ์ฒซ๋ฒ์งธ ์์๋ฅผ ๋ฐํ | <T> |
์ด๋ฐ ํจ์๋ค์ ๋์์ ์ดํด๋ณด๊ธฐ ์ํด, ์์ ๋ก ๋์ด๊ฐ 30์ด ๋ฏธ๋ง์ธ์ง ํ๋จํ๋ ์ฝ๋๋ฅผ ๊ตฌํํด๋ณด๊ฒ ์ต๋๋ค.
all, any
val under30 = { p:Person -> p.age < 30 }
//๋ชจ๋ ์์๊ฐ ๋ง์กฑํ๋์ง ํ๋จํ๋ ค๋ฉด all ํจ์๋ฅผ ์ฌ์ฉํฉ๋๋ค.
>>> val people = listOf(Person("์๋๋ก์ด๋", 25), Person("์ฝํ๋ฆฐ", 33))
>>> println(people.all(under30))
false
//ํ๋๋ผ๋ ๋ง์กฑํ๋ ์์๊ฐ ์๋์ง ํ๋จํ๋ ค๋ฉด any ํจ์๋ฅผ ์ฌ์ฉํฉ๋๋ค.
>>> println(people.any(under30))
true
ํ์ผ๋ก, !all๊ณผ !any๋ฅผ ์ฌ์ฉํ ์ ์์ง๋ง,
๋ค๋ง ( !all = any ), ( !any = all ) ์ ๊ฐ์ ๊ฒฝ์ฐ์๋ ์์ ! ์ฐ์ฐ์๋ฅผ ๋์น ์ฑ์ง ๋ชปํ๋ ๊ฒฝ์ฐ๊ฐ ์๊ธฐ ๋๋ฌธ์ ๊ฐ๋
์ฑ์ ๋์ด๊ธฐ ์ํด ๊ฐ๊ธ์ ์ด๋ฉด any์ all ์์ ! ๋ฅผ ๋ถ์ด์ง ์๋ ํธ์ด ๋ซ์ต๋๋ค!
count
์กฐ๊ฑด์ ๋ง์กฑํ๋ ์์์ ๊ฐ์๋ฅผ ๊ตฌํ ๋๋ count๋ฅผ ์ฌ์ฉํฉ๋๋ค.
val under30 = { p:Person -> p.age < 30 }
>>> val people = listOf(Person("์๋๋ก์ด๋", 25), Person("์ฝํ๋ฆฐ", 33))
>>> println(people.count(under30))
1
ํจ์๋ฅผ ํจ๊ณผ์ ์ผ๋ก ์ฌ์ฉํ๊ธฐ : count์ size
count ํจ์๊ฐ ์๋ค๋ ์ฌ์ค์ ์์ด๋ฒ๋ฆฌ๊ณ , ์ปฌ๋ ์ ์ ํํฐ๋งํ ๊ฒฐ๊ณผ์ ํฌ๊ธฐ๋ฅผ size๋ก ๊ฐ์ ธ์ค๋ ๊ฒฝ์ฐ๊ฐ ์ข ์ข ์์ต๋๋ค.
>>> println(people.filter(under30).size)
1
ํ์ง๋ง, ์ด๋ ๊ฒ ์ฒ๋ฆฌํ๋ฉด ์กฐ๊ฑด์ ๋ง์กฑํ๋ ๋ชจ๋ ์์๊ฐ ๋ค์ด๊ฐ๋ ์ค๊ฐ ์ปฌ๋ ์ ์ด ์๊ฒจ๋ฒ๋ฆฌ๊ฒ ๋ฉ๋๋ค.
๋ฐ๋ฉด์, count๋ ์กฐ๊ฑด์ ๋ง์กฑํ๋ ์์์ ๊ฐ์๋ง์ ์ถ์ ํ์ง ์์๋ฅผ ๋ฐ๋ก ์ ์ฅํ์ง๋ ์๊ธฐ ๋๋ฌธ์,
๋ฐ๋ผ์ count๊ฐ ํจ์ฌ ๋ ํจ์จ์ ์ด๋ผ๊ณ ํ ์ ์์ต๋๋ค.
find
find๋ ์กฐ๊ฑด์ ๋ง์กฑํ๋ ์ฒซ ๋ฒ์งธ ์์๋ฅผ ๋ฐํํ๊ณ , ๋ง์กฑํ๋ ์์๊ฐ ์๋ค๋ฉด null์ ๋ฐํํฉ๋๋ค.
val under30 = { p:Person -> p.age < 30 }
>>> val people = listOf(Person("์๋๋ก์ด๋", 25), Person("์ฝํ๋ฆฐ", 33))
>>> println(people.find(under30))
Person(name=์๋๋ก์ด๋, age=25)
find๋ ์กฐ๊ฑด์ ๋ง์กฑํ๋ ์ฒซ๋ฒ์งธ ์์๋ฅผ ๋ฐํํด์ฃผ๊ธฐ ๋๋ฌธ์ firstOrNull๊ณผ ๊ธฐ๋ฅ์ด ๋์ผํฉ๋๋ค.
๊ทธ๋ ๊ธฐ ๋๋ฌธ์, ์กฐ๊ฑด์ ๋ง์กฑํ๋ ์์๊ฐ ์์ผ๋ฉด null์ด ๋์จ๋ค๋ ์ฌ์ค์ ์ข ๋ ๋ช ํํ๊ฒ ํํํ๊ณ ์ถ๋ค๋ฉด firstOrNull์ ์ฌ์ฉํด๋ ๋ฌด๋ฐฉํฉ๋๋ค. ^^
groupBy : ๋ฆฌ์คํธ๋ฅผ ์ฌ๋ฌ ๊ทธ๋ฃน์ผ๋ก ์ด๋ฃจ์ด์ง ๋งต์ผ๋ก ๋ณ๊ฒฝ
์ปฌ๋ ์ ์ ๋ชจ๋ ์์๋ฅผ ์ด๋ค ํน์ฑ์ ๋ฐ๋ผ ์ฌ๋ฌ ๊ทธ๋ฃน์ผ๋ก ๋๋๊ณ ์ถ์ ๊ฒฝ์ฐ๊ฐ ์์ต๋๋ค.
์ด๋ฐ ๋ถ๋ฅ ํน์ฑ์ ํ๋ผ๋ฏธํฐ๋ก ์ ๋ฌํ๋ฉด ์ปฌ๋ ์ ์ ์๋์ผ๋ก ๊ตฌ๋ถํด์ฃผ๋ ํจ์๊ฐ ์์ผ๋ฉด ์ฐธ~ ํธ๋ฆฌํ ๊ฒ์ ๋๋ค.
groupBy ํจ์๊ฐ ๊ทธ๋ฐ ์ญํ ์ ํฉ๋๋ค.
์๋ฅผ ๋ค์ด, ์ฌ๋์ ๋์ด์ ๋ฐ๋ผ ๋ถ๋ฅํด๋ณด๊ฒ ์ต๋๋ค.
/* groupBy ์์ */
>>> val people = listOf(
Person("์๋๋ก์ด๋", 25),
Person("์ฝํ๋ฆฐ", 30),
Person("์๋ฐ", 30))
>>> println(people.groupBy { it.age })
{ 25=[Person(name=์๋๋ก์ด๋, age=25)],
30=[Person(name=์ฝํ๋ฆฐ, age=30), Person(name=์๋ฐ, age=30)] }
์ด ์ฐ์ฐ์ ๊ฒฐ๊ณผ๋ ์๋์ ๊ฐ์ ๋งต(Map)์ ๋๋ค.
- Key : ์์๋ฅผ ๊ตฌ๋ถํ๋ ํน์ฑ (์์ ์์๋ age)
- Value : Key ๊ฐ์ ๋ฐ๋ฅธ ๊ฐ ๊ทธ๋ฃน ๋ฆฌ์คํธ (์์ ์์๋ Person ๊ฐ์ฒด ๋ฆฌ์คํธ)
๊ทธ๋ฆผ์ผ๋ก ํํํ๋ฉด ์๋์ ๊ฐ์ต๋๋ค.
groupBy ํจ์๋ฅผ ์ ์ฉํ ๊ฒฐ๊ณผ
๋์น์ฑ์
จ์ ์๋ ์๊ฒ ์ง๋ง, ๊ฐ ๊ทธ๋ฃน์ ๋ฆฌ์คํธ์
๋๋ค.
๋ฐ๋ผ์, ์์ groupBy ๊ฒฐ๊ณผ ํ์
์ Map<Int, List<Person>>์ด ๋ฉ๋๋ค.
flatMap๊ณผ flatten : ์ค์ฒฉ๋ ์ปฌ๋ ์ ์์ ์์ ์ฒ๋ฆฌ
flatMap์ ์ฃผ์ด์ง ๋๋ค๋ฅผ ์ปฌ๋ ์ ์ ๋ชจ๋ ๊ฐ์ฒด์ ์ ์ฉํ๊ณ , ์ ์ฉํ ๊ฒฐ๊ณผ๋ก ์ป์ด์ง๋ ์ฌ๋ฌ ๋ฆฌ์คํธ๋ฅผ ํ ๋ฆฌ์คํธ๋ก flat ํ๊ฒ ๋ง๋๋ ํจ์์ ๋๋ค.
์ฆ, map์ ์ฒ๋ฆฌํ๊ณ ๋ ๋ค์์ ๊ฒฐ๊ณผ๊ฐ list์ธ ๊ฒฝ์ฐ, ์ด list์ ์์๋ฅผ ๋ค์ ํผ์ณ์ ํ๋์ list๋ก ๋ง๋ญ๋๋ค.
๋ง์ด ์กฐ๊ธ ์ด๋ ต๊ณ ์ ์ ์์ ์ ์์ง๋ง, "๋ฆฌ์คํธ์ ๋ฆฌ์คํธ๋ฅผ ์ฒ๋ฆฌํ ๋ ์ฐ๋ ํจ์" ๋ก ๊ธฐ์ตํด์ฃผ์๋ฉด ์ฌ์ธ ๊ฒ ๊ฐ์ต๋๋ค!
์์ ๋ฅผ ํ๋ ์ดํด๋ณด๋๋ก ํ๊ฒ ์ต๋๋ค.
>>> val strings = listOf("abc", "def")
>>> println(strings.flatMap { it.toList() })
์ ์ฝ๋๋ ๋ค์๊ณผ ๊ฐ์ ๋ ๋จ๊ณ๋ฅผ ์ํํฉ๋๋ค.
- it.toList()๋ฅผ ์ด์ฉํ์ฌ ํด๋น ์์๋ก ์ด๋ฃจ์ด์ง ๋ฆฌ์คํธ๊ฐ ๋ง๋ค์ด์ง๋ค. => list("abc"), list("def")
- flatMap์ด list์ ์์๋ฅผ flat ํ๊ฒ ๋ชจ๋ ์์๋ก ์ด๋ฃจ์ด์ง ๋จ์ผ ๋ฆฌ์คํธ๋ฅผ ๋ฐํํ๋ค. => list("a", "b", "c", "d", "e", "f")
๊ทธ๋ฆฌํ์ฌ ์ถ๋ ฅ์ ๊ฒฐ๊ณผ๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
[a, b, c, d, e, f]
๋ฆฌ์คํธ ์์๋ฅผ ์ฌ์ฉํด์ ํน๋ณํ ๋ณํํด์ผ ํ ๋ด์ฉ์ด ์๋ค๋ฉด, ๋จ์ํ ๋ฆฌ์คํธ์ ๋ฆฌ์คํธ๋ฅผ ํํํ๊ฒ ํผ์น๊ธฐ๋ง ํ๋ flatten ํจ์๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค.
๋ง๋ฌด๋ฆฌ
์ง๊ธ๊น์ง ์ฝํ๋ฆฐ ํ์ค ๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ ์ ๊ณตํ๋ ๋ช ๊ฐ์ง ์ปฌ๋ ์ ์ฐ์ฐ ํจ์๋ฅผ ์ดํด๋ณด์์ต๋๋ค.
๋ฌผ๋ก ์ด ์ธ์๋ ๋ ๋ง์ ํจ์๊ฐ ์๊ธฐ ๋๋ฌธ์, ๋๋ถ๋ถ์ ๊ฒฝ์ฐ ์ํ๋ ํจ์๋ฅผ ์ ์ฐพ์ผ์ ์ ํ์ฉํ์๋ฉด ์ง์ ์ฝ๋๋ก ๋ก์ง์ ๊ตฌํํ๋ ๊ฒ๋ณด๋ค ๋ ๋น ๋ฅด๊ณ ์ฝ๊ฒ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ ์ ์์ ๊ฒ ๊ฐ์ต๋๋ค. ^^
์ถ์ฒ : https://0391kjy.tistory.com/38
์ฝํ๋ฆฐ(Kotlin) - ์ปฌ๋ ์ API : filter, map, all, any, count, find, groupBy, flatMap, flatten
๋๋ค ํจ์ํ ํ๋ก๊ทธ๋๋ฐ์ ์ปฌ๋ ์ (Collection)์ ๋ค๋ฃฐ ๋ ์๋นํ ํธ๋ฆฌํ๊ณ ๋ง๊ฐํฉ๋๋ค. ๋๋ถ๋ถ์ ์์ ์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ํจ์๋ฅผ ํ์ฉํ ์ ์๊ณ , ๊ทธ๋ก ์ธํด ์ฝ๋๋ฅผ ์์ฃผ ๊ฐ๊ฒฐํ๊ฒ ๋ง๋ค ์ ์์ต๋๋ค. ๊ทธ
0391kjy.tistory.com
'Android' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Android] adb ๋ช ๋ น์ด ๋ชจ์ (0) | 2022.01.18 |
---|---|
[Android] ADT์์ ํฐ ์ฐ๊ฒฐ ํ ๋ refused ํด๊ฒฐ๋ฐฉ๋ฒ (0) | 2022.01.13 |
[Kotlin] SharedPrefMgr - ๊ฒ์๊ธฐ๋ก ์ญ์ , ๋ฆฌ์ฌ์ดํด๋ฌ๋ทฐ data ๊ฐฑ์ (0) | 2021.12.16 |
[Kotlin] Splash Api ํธ์ถํ ๋ฐ์ JSON data recyclerView + ๊ฒ์ํ์คํ ๋ฆฌ ์ถ๊ฐ (0) | 2021.12.13 |
[Kotlin] ๋๋ค์ / SAM๋ณํ /ํ์ฅํจ์ (0) | 2021.12.09 |