ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [Kotlin] List ์‚ฌ์šฉ๋ฒ•
    Android/Kotlin 2021. 8. 12. 23:36
    ๋ฐ˜์‘ํ˜•
    • ์ด ๊ธ€์€ "์œค์žฌ์„ฑ์˜ Google ๊ณต์‹ ์–ธ์–ด Kotlin" ๊ฐ•์˜๋ฅผ ๋“ฃ๊ณ  ๊ณต๋ถ€ํ•œ ๋‚ด์šฉ์œผ๋กœ ์ž‘์„ฑํ•˜์˜€์Šต๋‹ˆ๋‹ค.

    List

    • Array์™€ ๋™์ผํ•˜๊ฒŒ ์ธ๋ฑ์Šค๋ฅผ ํ†ตํ•ด ์›์†Œ์— ์ ‘๊ทผ์ด ๊ฐ€๋Šฅํ•œ ์„ ํ˜• ์ž๋ฃŒ๊ตฌ์กฐ์ž…๋‹ˆ๋‹ค.

    • Array๋Š” ํฌ๊ธฐ๊ฐ€ ์ •ํ•ด์ง€๋ฉด ๋ณ€๊ฒฝํ•  ์ˆ˜ ์—†์ง€๋งŒ, List๋Š” ์ถ”๊ฐ€, ์‚ญ์ œ๊ฐ€ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.

    • Kotlin์—์„œ๋Š” List๋ฅผ ์ƒ์„ฑํ•  ๋•Œ ํŠน์ง•์ด ์žˆ๋Š”๋ฐ ๋ถˆ๋ณ€ํ˜• ๋ฆฌ์ŠคํŠธ์™€ ๊ฐ€๋ณ€ํ˜• ๋ฆฌ์ŠคํŠธ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ถˆ๋ณ€ํ˜• ๋ฆฌ์ŠคํŠธ๋Š” ๊ฐ€๋ณ€ํ˜• ๋ฆฌ์ŠคํŠธ์— ๋น„ํ•ด ์›์†Œ ์ ‘๊ทผํ•˜๋Š” ์†๋„๊ฐ€ ์กฐ๊ธˆ ๋” ๋น ๋ฅด๊ณ  ๊ฐ€๋ณ€ํ˜• ๋ฆฌ์ŠคํŠธ๋Š” ์ƒˆ๋กœ์šด ์›์†Œ๋ฅผ ์ถ”๊ฐ€ํ•  ๋•Œ ์ถ”๊ฐ€ ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„์ด ํ•„์š”ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋ฉ”๋ชจ๋ฆฌ ํšจ์œจ์ธก๋ฉด์—์„œ๋„ ๋–จ์–ด์ง„๋‹ค๊ณ  ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ kotlin์—์„œ๋Š” List๋ฅผ ์‚ฌ์šฉํ•  ๋•Œ ๋ณ€๊ฒฝํ•ด์•ผํ•  ๊ฒฝ์šฐ์— ๋ถˆ๋ณ€ํ˜• ๋ฆฌ์ŠคํŠธ๋ฅผ ๊ฐ€๋ณ€ํ˜• ๋ฆฌ์ŠคํŠธ๋กœ ๋ณ€๊ฒฝ ํ›„ ๋ณ€๊ฒฝ์ด ์™„๋ฃŒ๋˜๋ฉด, ๋ถˆ๋ณ€ํ˜• ๋ฆฌ์ŠคํŠธ๋กœ ๋‹ค์‹œ ๋ณ€๊ฒฝํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.


    immutable List

    fun main(){
        val list1 = listOf(1,"2",3,'c')
        val list2 = listOf(1,2,3,4,5)
        val list3 = listOf("str1","str2","str3")
    
        println(list1)
        println(list2)
        println(list3)
    }
    • immutable List๋Š” listOf() ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์‰ฝ๊ฒŒ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ๊ณ , ๋‹ค์–‘ํ•œ ํƒ€์ž…์„ ๋Œ€์ž…ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. Array์™€ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ํƒ€์ž…์„ ๋ช…์‹œ์ ์œผ๋กœ ์ž…๋ ฅ์„ ํ•˜๋ฉด, ๋“ค์–ด์˜ค๋Š” ๋ฐ์ดํ„ฐ์˜ ํƒ€์ž…์„ ์ œํ•œ์‹œํ‚ฌ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
    • ๋˜ํ•œ, ์ถœ๋ ฅํ•˜๋Š” ๋ถ€๋ถ„์—์„œ Array์ฒ˜๋Ÿผ ํ•ด์‰ฌ ๊ฐ’์ด ๋‚˜์˜ค๋Š” ๊ฒƒ์ด ์•„๋‹Œ ๋ฆฌ์ŠคํŠธ ๋‚ด ๋“ค์–ด์žˆ๋Š” ์›์†Œ๋“ค์˜ ๊ฐ’์„ ๋ฐ”๋กœ ์ถœ๋ ฅ๋˜๋Š” ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.

    mutable List

    fun main(){
        //val list1 = mutableListOf()       // compile error
        val list1 = mutableListOf<Int>()
        val list2 = mutableListOf("str1","str2","str3")
    
        println(list1)
        println(list2)
    }
    
    • mutable List๋Š” mutableListOf() ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ์ง€๋งŒ, ๊ฐ’์„ ๋Œ€์ž…ํ•˜์ง€ ์•Š์„ ๊ฒฝ์šฐ์—๋Š” ํƒ€์ž…์ถ”๋ก ์ด ๋ถˆ๊ฐ€๋Šฅํ•˜๊ธฐ ๋•Œ๋ฌธ์— ํƒ€์ž…์„ ๋ช…์‹œํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

    emptyList, listOfNotNull

    fun main(){
        val list1 = emptyList<Int>()
        val list2 = listOfNotNull(1,2,3,4,null, 5,6,7,null, 8)
    
        println(list1)      // []
        println(list2)      // [1, 2, 3, 4, 5, 6, 7, 8]
    }
    • emptyList๋Š” ๋น„์–ด ์žˆ๋Š” ๋ถˆ๋ณ€ํ˜• ๋ฆฌ์ŠคํŠธ๋ฅผ ๋งŒ๋“ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
    • listOfNotNull์€ list ๋‚ด null์„ ์ œ์™ธํ•˜๊ณ  ๋ฆฌ์ŠคํŠธ๋ฅผ ๋งŒ๋“ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

    index ์‚ฌ์šฉ

    fun main(){
        val list1 = mutableListOf(1,2,3,4,5)
        println(list1[2])       // 3
        println(list1.get(1))   // 2
    
        list1[0] = -1
        list1.set(1, -2)
        println(list1)      // -1 -2 3 4 5 
    }
    • list๋Š” index๋ฅผ ํ†ตํ•ด์—ฌ ์›์†Œ ์ ‘๊ทผ์ด ๊ฐ€๋Šฅํ•˜๊ณ , getํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•ด๋„ ๋ฌด๋ฐฉํ•ฉ๋‹ˆ๋‹ค.
    • list์˜ ์›์†Œ๋ฅผ ์„ค์ •ํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ๋ฌด์กฐ๊ฑด ๊ฐ€๋ณ€ํ˜• ๋ฆฌ์ŠคํŠธ๋งŒ ๊ฐ€๋Šฅํ•˜๊ณ  index, setํ•จ์ˆ˜ ์‚ฌ์šฉํ•˜์—ฌ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

    Method

    • indexOf : ์ฒ˜์Œ๋ถ€ํ„ฐ ์›์†Œ ํƒ์ƒ‰ํ•˜์—ฌ ํ•ด๋‹น ์›์†Œ์˜ ๊ฐ’์„ ๊ฐ€์ง€๋Š” ์ธ๋ฑ์Šค๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋Š” ํ•จ์ˆ˜
    • lastIndexOf : ๋งˆ์ง€๋ง‰ ์›์†Œ๋ถ€ํ„ฐ ํƒ์ƒ‰ํ•˜์—ฌ ํ•ด๋‹น ์›์†Œ์˜ ๊ฐ’์„ ๊ฐ€์ง€๋Š” ์ธ๋ฑ์Šค๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋Š” ํ•จ์ˆ˜
    fun main(){
        val list1 = listOf(1,2,3,4,5,4,3,2,1)
        println(list1.indexOf(2))   // 1
        println(list1.lastIndexOf(2))   // 7
    }

    • subList : ์ง€์ •๋œ ๋ฒ”์œ„์˜ ๋ฆฌ์ŠคํŠธ๋ฅผ ์ƒ์„ฑํ•˜์—ฌ ๋ฐ˜ํ™˜ํ•˜๋Š” ํ•จ์ˆ˜
    fun main(){
        val list1 = listOf(1,2,3,4,5,4,3,2,1)
        val list2 = list1.subList(1,3)  // [2, 3]
        println(list2)
    }

    • add(value) : ๊ฐ€๋ณ€ํ˜• ๋ฆฌ์ŠคํŠธ์— ์›์†Œ๋ฅผ ์ถ”๊ฐ€ํ•˜๋Š” ํ•จ์ˆ˜
    • add(index, value) : ๊ฐ€๋ณ€ํ˜• ๋ฆฌ์ŠคํŠธ์˜ index ์œ„์น˜๋ ˆ ์›์†Œ๋ฅผ ์ถ”๊ฐ€ํ•˜๋Š” ํ•จ์ˆ˜
    • addAll(collection) : ๊ฐ€๋ณ€๋ น ๋ฆฌ์ŠคํŠธ์— collection์— ์žˆ๋Š” ์›์†Œ๋“ค ๋ชจ๋‘๋ฅผ ์ถ”๊ฐ€ํ•˜๋Š” ํ•จ์ˆ˜
    fun main(){
        val list1 = mutableListOf<Int>()
    
        list1.add(1)
        list1.add(2)
        list1.add(3)
        println(list1)      // [1,2,3]
    
        list1.addAll(listOf(4,5,6))
        println(list1)     // [1,2,3,4,5,6]
    
        list1.add(1, -1)
        list1.add(1, -2)
    
        println(list1)      // [1,-2,-1,2,3,4,5,6]
    }

    • remove(value) : ๊ฐ€๋ณ€ํ˜• ๋ฆฌ์ŠคํŠธ์˜ ํ•ด๋‹น ์›์†Œ๋ฅผ ์‚ญ์ œํ•˜๋Š” ํ•จ์ˆ˜
    • removeAt(index) : ๊ฐ€๋ณ€ํ˜• ๋ฆฌ์ŠคํŠธ์—์„œ index์— ํ•ด๋‹นํ•˜๋Š” ์›์†Œ๋ฅผ ์‚ญ์ œํ•˜๋Š” ํ•จ์ˆ˜
    fun main(){
        val list1 = mutableListOf<Int>(1,2,3,4,5)
        list1.remove(4)
        list1.remove(2)
    
        println(list1)      // [1,3,5]
    
        list1.removeAt(0)
        println(list1)      // [3,5]
    }

    • set(index, value) : ๊ฐ€๋ณ€ํ˜• ๋ฆฌ์ŠคํŠธ์—์„œ index์— ์›์†Œ๋ฅผ ์„ค์ •ํ•˜๋Š” ํ•จ์ˆ˜

    ๋ฆฌ์ŠคํŠธ์˜ ๋ณ€๊ฒฝ

    • toList : ๋ถˆ๋ณ€ํ˜• ๋ฆฌ์ŠคํŠธ๋ฅผ ์ƒ์„ฑํ•ด ๋ฐ˜ํ™˜ํ•˜๋Š” ํ•จ์ˆ˜

    • toMutableList : ๊ฐ€๋ณ€ํ˜• ๋ฆฌ์ŠคํŠธ๋ฅผ ์ƒ์„ฑํ•ด ๋ฐ˜ํ™˜ํ•˜๋Š” ํ•จ์ˆ˜

    • Example์€ ์ƒ๋žตํ•˜๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

    ๋ฐ˜์‘ํ˜•

    'Android > Kotlin' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

    [Kotlin] Set ์‚ฌ์šฉ๋ฒ•  (0) 2021.08.13
    [Kotlin] Map ์‚ฌ์šฉ๋ฒ•  (0) 2021.08.12
    [Kotlin] String ์‚ฌ์šฉ๋ฒ•  (0) 2021.08.12
    [Kotlin] Array ์‚ฌ์šฉ๋ฒ•  (0) 2021.08.12
    [Kotlin] Functional Programming  (0) 2021.08.11
Designed by Tistory.