List (Mutable, Immutable)


Mutable vs Immutable


まず、この用語はどこで使われていますか.
コトリンにとって,これは集合配列を区別するための標準的な概念である.
Mutable(可変)Immutable(不変)から.
簡単に言えば、Read&WriteとRead Only
例を見て考えましょう.

不変の例


List< t >

fun main(args:Array<String>){

    val list = listOf(1,2,3,"String")

    // size
    println(list.size)

    // 특정 값(value)의 존재 유무 (Boolean)
    if(list.contains(1)){
        println(true)
    }else{
        println(false)
    }

    // 특정 값(value)의 위치 추출
    println(list.indexOf(2))

    // 특정 위치(index)의 값(value)의 추출
    println(list[2])
}
この場合、リストにコンテンツ(書き込み)を追加または削除することはできません.
特定の値があるかどうか
list.contains("int")
特定の値を抽出する場所
list.indexOf("String or Int")
特定の場所の値を抽出
println(list[1])
リストのindex 1から何を選択しますか.

MutableList


    val list = mutableListOf(1,2,3,"String")

    // size
    println(list.size)

    // 특정 값(value)의 존재 유무 (Boolean)
    if(list.contains(1)){
        println(true)
    }else{
        println(false)
    }

    // 특정 값(value)의 위치 추출
    println(list.indexOf(2))

    // 특정 위치(index)의 값(value)의 추출
    println(list[2])

    var s = list.size
    for(i in 0 until s){
        print(list[i])
        print(" ")
    }
    println()

    list.add("추가된 변수")

    s = list.size
    for(i in 0 until s){
        print(list[i])
        print(" ")
    }
    println()

    list.removeAt(0)

    s = list.size
    for(i in 0 until s){
        print(list[i])
        print(" ")
    }
    println()

    list.addAll(listOf("추가1", "추가2", 2,3,4))

    s = list.size
    for(i in 0 until s){
        print(list[i])
        print(" ")
    }
    println()
}

#### 근데 여기부터 왜 주석처리가 되버렸지 

기존의 List의 읽기기능은 이미 가지고있다.
그렇다면 쓰기는 어떨까?

추가
list.add("넣을것")
인덱스 순서는 해당리스트의 끝에 추가된다.
list.add(인덱스위치 , "넣을것")
인덱스 위치에 넣는다.
list.addall(인덱스위치, "넣을것")
addall을 이용하면 리스트안에 collection을 넣을수 있다.
list.set(인덱스위치,"넣을것")
리스트의 인덱스위치에 존재하는걸 넣을것으로 바꿔준다.
list[인덱스위치] = "넣을것"
위와 같은기능.

list.clear() ---> 리스트안의 내용이 전부 삭제되고 null로 바뀐다.


list.remove("뺄것")
위치에 상관없이 뺄것을 빼버린다.
list.removeAt(인덱스위치)
인덱스 위치에 존재하는 요소를 제거한다.
list.removeall(Collection)
Collection을 인자로 받으며 실행되고, 리스트안에 컬렉션의 요소중 일치하는것이 있으면 제거한다.

**공부를하다보니 list.size 가 나왔다 . 파이썬의 len과 같은것.**
**mulist.retainAll(list) mulist와 list의 교집합을 나타낸다.**