List (Mutable, Immutable)

0

코틀린

목록 보기
4/11

Mutable vs Immutable

일단 이 용어를 어디서 쓰느냐.
코틀린의 경우 컬렉션의 배열을 나누는 기준으로 쓰이는 개념이다.
Mutable ( 가변 ) Immutable ( 불변 ) 부터 시작하자.
쉽게 생각하면 Read&Write vs Read Only

예시를 보면서 생각을 하자.

Immutable의 예시

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에 무언가를 추가하거나 제거할수는 없지만(쓰기)
특정값이 있는지
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의 교집합을 나타낸다.**





profile
러닝커브를 따라서 등반중입니다.

0개의 댓글