개발(Android)/kotlin syntax

[Kotlin syntax] Collections (1) Lists

shinyelee 2022. 4. 7. 12:12

[코틀린 문법] 리스트

// List(리스트) //

// 데이터를 모아 관리하는 콜렉션 클래스를 상속받는 서브 클래스(List, Set, Map) 중 가장 단순한 형태
// 여러 개의 데이터를 원하는 순서대로 넣어 관리하는 형태

fun main() {

    // List //
    // 생성시에 넣은 객체 대체/추가/삭제 불가능

//    val a : List<String> = listOf("사과", "딸기", "배")
    // 코틀린은 알아서 타입추론하기 때문에
    // : List<String> 즉 자료형 부분 생략 가능
    val a = listOf("사과", "딸기", "배")
    println(a[1])

    for (fruit in a) {
        print("${fruit}:")
    }
    println()
    
    // : List<Any>일 경우 자료형 아무거나 다 넣을 수 있음
//    val anyList : List<Any> = listOf(4,"b",5L)
    // 자료형 생략
    val anyList = listOf(4,"b",5L)

    // 리스트는 배열과 달리 인터페이스
    // 객체 가져올 순 있어도 그 값을 직접 바꾸는 것은 불가능
    var result = a.get(0)



    // Mutable List //
    // 생성시에 넣은 객체 대체/추가/삭제 가능
    
    // arrayList 초기화
//    val arrList : ArrayList<Int> = arrayListOf<Int>()
    // 자료형 생략
    val arrList = arrayListOf<Int>()
    
    // var 아니고 val인 이유?
    // -> 객체 대체/추가/삭제 (O)
    // -> 리스트 자체를 재정의 (X)
    arrList.add(10)
    arrList.add(20)
//    arrList = arrayListOf()
//    Kotlin: Val cannot be reassigned



    val b = mutableListOf(6, 3, 1)
    println(b)

    // add(데이터 추가)
    b.add(4)
    println(b)

    // add(데이터, 인덱스 추가)
    b.add(2, 8)
    println(b)

    // remove(데이터 삭제)
    // removeAt(인덱스 삭제)
    b.removeAt(1)
    println(b)

    // shuffle(랜덤, 순서 섞기)
    b.shuffle()
    println(b)

    // sort(정렬)
    b.sort()
    println(b)



    val cards = mutableListOf("Jack", "Queen", "King")
    println(cards)

    cards.add("Ace")
    println(cards)

    cards.remove("Jack")
    println(cards)

    // 전부 비우기
    cards.clear()
    println(cards)

    // 데이터 변경
    // list[인덱스] = 데이터

}
fun main() {

    // 리스트 만드는 방법 (1)
    val testList1 = ArrayList<String>()
    testList1.add("a")
    testList1.add("b")
    testList1.add("c")
    println(testList1)

    // 리스트 만드는 방법 (2)
    val testList2 = listOf("a", "b", "c")
    println(testList2)

    // 리스트 만드는 방법 (3)
    val testList3 = mutableListOf<String>("a", "b", "c")
    println(testList3)
    testList3.add("d")
    println(testList3)
    
    // 리스트 출력
    val testList6 = listOf("a", "b", "c","d", "e", "f")
    // 관습적으로 i로 씀 -> 다른 알파벳이어도 노상관
    for (i in testList6) {
        print(i)
    }
    
    
    
    // list는 추가/제거를 못 함
    val testList1 = listOf("a", "b", "c")
    println(testList1)
    println(testList1[0])
//    [a, b, c]
//    a

    // 이렇게 만들면 추가/제거 불가능
//    testList1.add("d")



    // mutable list는 추가/제거 가능
    val testList2 = mutableListOf("a", "b", "c")
    println(testList2)
//    [a, b, c]
    
    // "d" 추가
    testList2.add("d")
    println(testList2)
//    [a, b, c, d]
    
    // "a" 제거
    testList2.remove("a")
    println(testList2)
//    [b, c, d]
    
    }
// List Format(리스트 가공) //

fun main() {

    val testList1 = mutableListOf<Int>()
    testList1.add(1)
    testList1.add(2)
    testList1.add(3)
    testList1.add(4)
    testList1.add(10)
    testList1.add(10)
    testList1.add(11)
    testList1.add(11)
    println(testList1)
//    [1, 2, 3, 4, 10, 10, 11, 11]

    // 중복 제거
    println(testList1.distinct())
//    [1, 2, 3, 4, 10, 11]

    // 최대값
    println(testList1.maxOrNull())
//    11

    // 최소값
    println(testList1.minOrNull())
//    1

    // 평균값
    println(testList1.average())
//    6.5



    // 필터
    val testList2 = listOf("john", "jay", "minsu", "minji", "suji", )

    val result1 = testList2.filter {
        it.startsWith("m")
    }
    println(result1)
//    [minsu, minji]

    val testList3 = listOf(1, 2, 3, 4, 5)

    val result2 = testList3.filter {
        // 글자수를 2로 나눴을 때 나머지가 0인 이름
        // 즉 글자수가 짝수인 경우만 출력
        it % 2 == 0
    }
    println(result2)
//    [2, 4]

    val testList4 = listOf("a", "aa", "aaa", "aaaa")

    val result3 = testList4.groupBy {
        // 글자수가 2 초과면 true로 묶고
        // 글자수가 2이하면 false로 묶음
        it.length > 2
    }
    println(result3)
//    {false=[a, aa], true=[aaa, aaaa]}

}

참고

 

[입문편] 안드로이드를 위한 코틀린(Kotlin) 문법 - 인프런 | 강의

코틀린 문법 기초 강의입니다. 안드로이드 앱을 코틀린 언어로 개발하고 싶으신 분들을 위한 강의이고, 기초부터 튼튼하게 코틀린 문법을 재미있게 공부할 수 있습니다., - 강의 소개 | 인프런...

www.inflearn.com

반응형

'개발(Android) > kotlin syntax' 카테고리의 다른 글

[Kotlin syntax] Null Safety  (0) 2022.04.07
[Kotlin syntax] String Formatting  (0) 2022.04.07
[Kotlin syntax] Generic  (0) 2022.04.07
[Kotlin syntax] Polymorphism  (0) 2022.04.06
[Kotlin syntax] Observer Pattern, Anonymous Objects  (0) 2022.04.06