Coding Memo

Kotlin 리스트 (Collections) 본문

Language/Kotlin

Kotlin 리스트 (Collections)

minttea25 2021. 1. 10. 16:36

Java와 마찬가지로 Collections 클래스에 List, Map, Set이 있다.

 

이 중 List는 순서가 있는 집합이다.

 

배열하고 리스트의 차이점을 간단하게 정리하면

Array List
연속적인 메모리 공간 불연속적인 메모리 공간
공간의 크기가 정해져있음 공간의 크기가 유동적임 (동적할당)
연속적인 메모리 공간에 대한 index 전의 데이터가 그 다음의 데이터를 포인터로 가리키고 있음

 

아래 함수들의 예시는 글 맨 아래에 한 번에 해놓았다.


List

 

Collection의 하위 클래스 중 하나이다.

각 데이터를 배열 처럼 index로 접근할 수 있다.

 

interface List<out E> : Collection<E>

interface MutableList<E> : List<E>MutableCollection<E>

 

종류

 

List<out T>

MutableList<T>

 

위의 리스트는 val 형태의 리스트이고

아래의 리스트는 말 그대로 값이 변경 가능한 var 형태의 리스트이다.

 

아래 링크 참고

https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.collections/-mutable-list/#kotlin.collections.MutableList

 

MutableList - Kotlin Programming Language

 

kotlinlang.org


add

 

abstract fun add(element: E): Boolean

abstract fun add(index: Int, element: E)

 

마지막 index에 아이템을 추가한다. (추가하여 리스트가 변경되기 때문에 항상 true 반환)

index 인자를 넣으면 그 index에 맞는 위치에 아이템이 추가된다.

 

abstract fun addAll(elements: Collection<E>): Boolean

 

인자로 받은 Collection의 아이템을 모두 아이템으로 추가한다.

(리스트가 변경이 되면 true 반환)


clear

 

abstract fun clear()

 

리스트에 있는 모든 아이템을 지운다.


remove

 

abstract fun remove(element: E): Boolean

abstarct fun removeAt(index: Int): E

 

지정된 아이템을 지운다. (삭제에 성공하면 true 반환)

index를 인자로 하여 해당 index에 있는 아이템을 지울 수도 있다. (삭제한 아이템 반환)


set

 

abstract operator fun set(index: Int, element: E): E

 

해당 index에 지정된 아이템으로 바꾼다.

이 함수는 아래와 동일하게 기능한다. (인텔리제이 IDE에서도 아래 표현식을 추천한다.

 

list[index: Int] = E


shuffle

 

fun <T> MutableList<T>.shuffle()

fun <T> MutableList<T>.shuffle(random: Random)

 

데이터의 순서를 무작위로 바꾼다.


sort

 

fun <T> MutableList<T>sort(Comparator: Comparator<in T>)

 

정렬 기능을 가지고 있다.

리스트에서는 mutableList에 대해서만 정렬된다. (var 형태의 list에서 x)

fun main() {
    val a: MutableList<Int> = mutableListOf<Int>(3, 4, 2, -1, 10, -2)

    println("before sorting: $a")
    a.sort()
    println("after sorting: $a")
}

sort 예시 출력 결과

참고: sort는 Collections에서 제공하고 있는 함수이기도 해서 클래스를 대상으로 사용할 수도 있고 인자를 통해 범위를 지정할 수도 있는 등 여러 가지가 있다.

https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.collections/sort.html

 

sort - Kotlin Programming Language

 

kotlinlang.org


fun main() {
    val l: MutableList<String> = mutableListOf("apple", "strawberry", "cherry")
    println("original: $l")

    l.add("peach")
    println("after adding peach: $l")

    l.remove("cherry")
    println("after removing cherry: $l")

    l[0] = "pineapple"
    println("after replacing index 0: $l")

    l.shuffle()
    println("after shuffling: $l")

    for (item in l) {
        print("$item ")
    }
    println()

    l.clear()
    println("after clearing: $l")
}

list 예시 출력 결과 

list에 있는 아이템을 for 문으로 차례대로 불러올 수도 있다.

'Language > Kotlin' 카테고리의 다른 글

Kotlin map (Collections)  (0) 2021.01.11
Kotlin Set (Collections)  (0) 2021.01.11
Kotlin 데이터 클래스  (0) 2021.01.08
Kotlin 열거형 클래스  (0) 2021.01.08
Kotlin 중첩 / 내부 클래스  (0) 2021.01.08