배열이란?
동일한 자료형을 가진 데이터를 순차적으로 저장한 자료구조입니다.
자바에서 배열 선언
int[] arr1 = new int[n];
String[] arr2 = new String[n];
코틀린에서 배열 선언
1. arrayOf()
코틀린에서는 arrayOf() 함수를 사용해 배열을 선언할 수 있습니다.
기본 문법
val 배열이름: 자료형 = arrayOf(요소) // 자료형은 생략 가능
int[] arr = {1, 2, 3}; // 자바
val arr = arrayOf(1, 2, 3) // 코틀린
위 두 코드는 동일한 배열을 생성합니다.
타입 추론
코틀린은 배열에 저장할 값이 명확하다면 자료형을 명시하지 않아도 됩니다. 하지만 명시적으로 타입을 지정할 수 있습니다.
2. arrayOfNulls<>()
null 값을 초기값으로 가지는 배열을 만들 때는 arrayOfNulls() 함수를 사용합니다.
val arr = arrayOfNulls<Int>(5)
위 코드는 길이가 5이며 초기값이 null인 배열을 생성합니다.
3. Array()
특정 값으로 배열을 초기화하거나, 람다식을 사용하여 배열을 생성할 수 있습니다.
val arr = Array(크기) { 요소 }
예시 1: 크기가 5이고, 모든 요소가 0인 배열
val arr1 = Array(5) { 0 }
예시 2: i는 0부터 n-1까지 반복하며 람다식을 통해 각 요소가 i * i인 배열
val arr2 = Array(5) { i -> i * i } // 0, 1, 4, 9, 16
4. 배열 복사
copyOf() 메소드를 사용하면 배열을 복사할 수 있습니다
val original = intArrayOf(1, 2, 3)
val copy = original.copyOf() // 원본 배열을 복사
그 외 다양한 배열 생성 함수들
- intArrayOf()
- stringArrayOf()
- doubleArrayOf()
- booleanArrayOf() 등
var / val로 배열 선언 차이
코틀린에서 var와 val은 참조 가변성과 참조 불변성을 나타냅니다. 코틀린은 불변성을 지향하는 언어이므로, val을 선호하는 경향이 있습니다.
val을 더 많이 사용하는 이유
- 안정성
참조를 변경하지 않겠다는 의도를 명확히 하여, 코드의 안정성을 높이고 유지보수성을 향상시킵니다. - 불변성 지향
코틀린은 불변성을 지향하기 때문에, 가능한 val을 사용하는 것이 좋습니다.
예시
// var로 선언한 배열
var arr = arrayOf(1, 2, 3)
arr[0] = 10 // 가능
arr = arrayOf(4, 5, 6) // 가능 (참조 변경 가능)
// val로 선언한 배열
val arr = arrayOf(1, 2, 3)
arr[0] = 10 // 가능
arr = arrayOf(4, 5, 6) // 불가능 (참조 변경 불가)
배열 출력하기
1. contentToString() 함수 사용
배열의 내용을 문자열로 변환하여 출력하는 방법입니다.
val numbers = intArrayOf(1, 2, 3, 4, 5)
println(numbers.contentToString())
2. for 루프 사용
배열의 요소를 하나씩 출력하는 기본적인 방법입니다.
val numbers = intArrayOf(1, 2, 3, 4, 5)
for (num in numbers) {
println(num)
}
3. joinToString() 함수 사용
배열을 특정 구분자로 연결하여 문자열로 변환할 수 있습니다. 자바의 join() 함수와 유사합니다.
val numbers = intArrayOf(1, 2, 3, 4, 5)
println(numbers.joinToString(", "))
4. forEach 함수 사용
람다식을 사용하여 배열의 각 요소를 출력할 수 있습니다.
val numbers = intArrayOf(1, 2, 3, 4, 5)
numbers.forEach { println(it) }
배열의 다양한 메서드
코틀린에서는 배열을 다룰 수 있는 다양한 메서드를 제공합니다. 배열을 쉽게 변환, 필터링, 맵핑할 수 있는 함수들이 있습니다.
- map(): 배열의 각 요소에 대해 람다식을 적용한 새로운 배열을 반환합니다.
- filter(): 조건에 맞는 요소들만으로 이루어진 배열을 생성합니다.
- sortedArray(): 배열을 정렬할 수 있습니다.
val doubled = intArrayOf(1, 2, 3).map { it * 2 }.toIntArray()
val filtered = intArrayOf(1, 2, 3, 4, 5).filter { it % 2 == 0 }.toIntArray()
val sorted = intArrayOf(3, 1, 2).sortedArray()
'Kotlin' 카테고리의 다른 글
[Kotlin] Kotlin의 등장 배경, Java와의 차이점, 장점과 단점 (4) | 2024.10.03 |
---|---|
[Kotlin] 여러 가지 타입 변환 (0) | 2024.09.26 |
[Kotlin] 변수 선언 (3) | 2024.09.25 |