1. 코틀린 배열의 이해
1.1 배열의 개념과 특징
- 배열은 동일한 타입(또는 하위 타입)의 값들을 고정된 크기로 저장하는 자료구조입니다.
- 코틀린에서 가장 일반적인 배열 형태는
Array클래스로 표현되는 객체형 배열입니다.
정보
코틀린의 배열은 항상 가변(mutable)이며, 크기가 고정되어 있다는 특징이 있습니다. 이는 다른 컬렉션 타입들과 구별되는 중요한 특성입니다.
1.2 배열과 컬렉션의 차이
- 코틀린에서는 대부분의 경우 컬렉션 사용을 권장합니다.
- 배열은 다음과 같은 특별한 요구사항이 있을 때 사용합니다:
- 저수준(low-level) 요구사항이 있는 경우
- 특별한 성능 최적화가 필요한 경우
- 커스텀 자료구조 구현이 필요한 경우
팁
컬렉션의 장점:
- 읽기 전용(read-only) 컬렉션 지원으로 코드의 의도를 명확히 표현
- 요소의 추가/제거가 용이
- 구조적 동등성 비교(==) 연산자 사용 가능
2. 배열 생성하기
2.1 기본 생성 방법
- 코틀린에서 배열을 생성하는 방법에는 여러 가지가 있습니다
arrayOf() 함수 사용
// [1, 2, 3] 값을 가진 배열 생성
val simpleArray = arrayOf(1, 2, 3)
arrayOfNulls() 함수 사용
// null로 채워진 크기 3의 배열 생성
val nullArray: Array<Int?> = arrayOfNulls(3)
Array 생성자 사용
// 인덱스의 제곱값을 문자열로 가지는 배열 생성
val squareArray = Array(5) { i -> (i * i).toString() }
// 결과: ["0", "1", "4", "9", "16"]
2.2 다차원 배열 생성
- 코틀린에서는 배열을 중첩하여 다차원 배열을 만들 수 있습니다:
// 2차원 배열 생성
val twoDArray = Array(2) { Array<Int>(2) { 0 } }
// 결과: [[0, 0], [0, 0]]
// 3차원 배열 생성
val threeDArray = Array(3) { Array(3) { Array<Int>(3) { 0 } } }
노트
다차원 배열의 각 차원은 서로 다른 타입이나 크기를 가질 수 있습니다.
3. 배열의 활용
3.1 요소 접근과 수정
- 배열의 요소는 인덱스 연산자
[]를 사용하여 접근하고 수정할 수 있습니다:
val simpleArray = arrayOf(1, 2, 3)
simpleArray[0] = 10 // 첫 번째 요소를 10으로 변경
3.2 가변 인자 함수에서의 활용
- 배열은 가변 인자(vararg) 함수에 스프레드 연산자(*)를 사용하여 전달할 수 있습니다:
fun printAll(vararg strings: String) {
strings.forEach { print(it) }
}
val letters = arrayOf("c", "d")
printAll("a", "b", *letters) // abcd 출력