✅ Kotlin의 리스트는 mutableListOf, List, ArrayList 등이 있으며, 코딩테스트에서는 대부분 가변 리스트(mutableListOf) 사용합니다.
🔹 리스트 선언 (가변, 불변)
| 종류 |
선언 방법 |
설명 |
| 불변 리스트 |
val list = listOf(1, 2, 3) |
요소 추가/삭제 불가 |
| 가변 리스트 |
val list = mutableListOf(1, 2, 3) |
요소 변경 가능 |
| Java 방식 |
val list = ArrayList<Int>() |
자바 스타일, 인터페이스 동일 |
🔹 크기만 정해 초기화
val list = MutableList(5) { 0 } // [0, 0, 0, 0, 0]
val list = MutableList(5) { it * 2 } // [0, 2, 4, 6, 8]
MutableList(n) { 초기값 } 사용
🔹 리스트 접근 & 수정
val list = mutableListOf(10, 20, 30)
list[1] = 99
println(list[1]) // 99
🔹 리스트 메서드 (자주 사용)
list.add(4) // 요소 추가
list.addAll(list2) // 리스트 병합
list.remove(2) // 값이 2인 첫 요소 제거
list.removeAt(0) // 인덱스 0 제거
list.clear() // 전체 삭제
list.contains(3) // 포함 여부
list.indexOf(5) // 값의 인덱스
list.size // 크기
list.isEmpty() // 비었는지 확인
🔹 기타 유용한 리스트 메서드
🔸 마지막 인덱스 접근
val last = list[list.lastIndex] // list[list.size - 1]와 동일
🔸 부분 리스트 추출
val sub = list.subList(1, 4) // 인덱스 1 이상, 4 미만
🔸 리스트 뒤집기
list.reverse() // 제자리 반전
val rev = list.reversed() // 새 리스트 반환
🔹 리스트 순회
for (x in list) println(x)
for ((i, v) in list.withIndex()) println("$i: $v")
list.forEach { println(it) }
🔹 리스트 정렬
list.sort() // 오름차순 (in-place)
list.sortDescending() // 내림차순
list.sorted() // 정렬된 새 리스트 반환
list.sortedBy { it % 10 } // 조건 기반 정렬
list.sortWith(compareBy<Int> { it % 10 }.thenByDescending { it })
🔹 변환 / 복사 / 필터링
val newList = list.toList() // 복사 (불변)
val copied = list.toMutableList() // 복사 (가변)
val filtered = list.filter { it > 0 } // 조건 필터링
val mapped = list.map { it * 2 } // 요소 변환
val distinct = list.distinct() // 중복 제거
🔹 Java의 LinkedList 활용 (Queue 대용)
import java.util.LinkedList
val q = LinkedList<Int>()
q.add(1)
q.add(2)
println(q.poll()) // 1
- Kotlin에는 기본
LinkedList 없음 → Java API 사용 가능
poll(), peek(), add(), remove() 등 큐처럼 사용
ArrayDeque도 대안으로 사용됨 (다음 시리즈에서 다룸)
✅ 요약: Kotlin 컬렉션/배열 상호 변환 정리표
| From → To |
방법 |
비고 |
List<T> → Array<T> |
list.toTypedArray() |
제네릭 타입에 사용 |
List<Int> → IntArray |
list.toIntArray() |
Int, Long 등 기본형만 가능 |
Array<T> → List<T> |
array.toList() |
읽기 전용 List 반환 |
Array<T> → MutableList<T> |
array.toMutableList() |
변경 가능한 리스트 |
IntArray → List<Int> |
intArray.toList() |
박싱됨 (Int → Integer) |
List<T> → MutableList<T> |
list.toMutableList() |
복사 후 변경 가능 |
MutableList<T> → List<T> |
그냥 사용 가능 |
List는 MutableList의 상위타입 |
✅ 요약 정리
- 가변 리스트 선언:
mutableListOf, MutableList(n) {}
- 접근/변경:
list[i], list[i] = 값
- 추가/삭제:
add, remove, removeAt, clear
- 순회:
for, withIndex, forEach
- 정렬:
sort(), sortBy, sortWith
- 변환:
map, filter, toList, distinct
다음은 시리즈 ⑥: Map & Set 정리로 이어집니다.