Coding Memo
Kotlin 리스트 (Collections) 본문
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 형태의 리스트이다.
아래 링크 참고
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는 Collections에서 제공하고 있는 함수이기도 해서 클래스를 대상으로 사용할 수도 있고 인자를 통해 범위를 지정할 수도 있는 등 여러 가지가 있다.
https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.collections/sort.html
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에 있는 아이템을 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 |