Kotlin 배열(Array) 선언, 초기화, 주요 함수

배열을 선언하고 초기화하는 방법을 소개한다.

배열(Array)

arrayOf()으로 배열을 생성한다. 배열의 개수는 고정이긴 하지만 성능이 우수하다.

fun main() { val nums = arrayOf(1, 2, 3) val cols = arrayOf("Red", "Green", "Blue") for (n in nums) { println(n) } for (c in cols) { println(c) } }

Output:

1 2 3 Red Green Blue

아래와 같이 변수 선언시에 Array<Int> 타입을 입력하면, 뒤 부분의 타입은 <>으로 생략할 수 있다.

val array: Array<Int> = emptyArray<>()

대괄호 [...]로 배열의 요소에 접근할 수 있으며, 배열의 인덱스는 0부터 시작한다.

println(nums[0]) println(cols[1])

빈(Empty) 배열 선언

아래 함수로 특정 타입의 빈 배열을 선언할 수 있다.

val array1 = emptyArray<Int>()
val array2 = arrayOf<Int>()
``

```kotlin
fun main() {
    val array1 = emptyArray<Int>()
    println("array1: ${array1.contentToString()}")

    val array2 = arrayOf<Int>()
    println("array2: ${array2.contentToString()}")
}

Output:

array1: [] array2: []

배열 선언 시, 초기 값 설정

arrayOf<Type>(values)로 배열에 초기 값을 설정할 수 있다. 이때, (values)로 타입을 유추할 수 있기 때문에 <Type>은 생략할 수 있다.

fun main() { val array1 = arrayOf<Int>(1, 2, 3, 4) println("array1: ${array1.contentToString()}") val array2 = arrayOf("Red", "Green", "Blue") println("arr: ${array2.contentToString()}") }

Output:

array1: [1, 2, 3, 4] array2: [Red, Green, Blue]

동일한 값으로 배열 초기화

Array(size) { value }는 배열을 size로 설정한 크기 만큼 생성하며, 요소들을 모두 설정한 value로 할당한다.

fun main() { val array = Array(3) { 20 } println("array: ${array.contentToString()}") }

Output:

array: [20, 20, 20]2

연속된 숫자로 배열 초기화

Array(size) { lambda }는 배열을 size로 설정한 크기 만큼 생성하며, 요소들을 모두 lambda의 반환 값으로 설정된다.

lambda에 전달되는 it는 요소의 index 값이 되며, 아래와 같이 연속된 숫자로 배열을 초기화할 수 있다.

fun main() { val array1 = Array(5) { it -> it } println("array1: ${array1.contentToString()}") val array2 = Array(5) { it -> it + 10 } println("array2: ${array2.contentToString()}") }

Output:

array1: [0, 1, 2, 3, 4] array2: [10, 11, 12, 13, 14]

Null로 배열 초기화

arrayOfNulls<Type>(size)null로 가득찬 배열을 생성할 수 있다.

fun main() { val array = arrayOfNulls<Int>(5) println("array: ${array.contentToString()}") }

Output:

array: [null, null, null, null, null]

기본 자료형 배열 선언

kotlin에는 IntArray, BooleanArray, DoubleArray, LongArray 등, 기본 자료형 배열을 제공한다.

이런 배열을 생성할 때는 intArrayOf(), booleanArrayOf() 등을 사용하여 생성할 수 있다.

fun main() { val iniArray: IntArray = intArrayOf(1, 2, 3) println("iniArray: ${iniArray.contentToString()}") val booleanArray: BooleanArray = booleanArrayOf(true, true, false) println("booleanArray: ${booleanArray.contentToString()}") val doubleArray: DoubleArray = doubleArrayOf(1.2, 2.3, 3.4) println("doubleArray: ${doubleArray.contentToString()}") }

Output:

iniArray: [1, 2, 3] booleanArray: [true, true, false] doubleArray: [1.2, 2.3, 3.4]

주요 함수

forEach 함수

forEach 함수는 목록에 반복 처리를 할 수 있다.

fun main() { val array = arrayOf(1, 2, 3, 4, 5) // lambda으로 사용한 방법이다. array.forEach({ element -> print("$element,") }) // => 1,2,3,4,5 println() // 괄호'()'은 생략할 수 있다. array.forEach { element -> print("$element,") } println() // it으로 람다를 대신하여 객체를 받아올 수 있다. array.forEach { print("$it,") } // => 1,2,3,4,5 }

Output:

1,2,3,4,5, 1,2,3,4,5, 1,2,3,4,5,

filter 함수

filter 함수는 목록에 조건을 걸어 그 조건에 맞는 새로운 목록을 반환한다.

fun main() { val array = arrayOf(1, 2, 3, 4, 5) // => 1,2,3,4,5 배열을 생성한다. // filter의 조건에 충족되는 함수를 반환한다. array.filter({ e -> e % 2 == 0 }).forEach { println(it) } // => 2,4 // 괄호'()'은 생략할 수 있다. array.filter { e -> e % 2 == 0 }.forEach { println(it) } // => 2,4 // lambda 사용하지 않고도 'it'으로 객체를 받아 올 수 이 있다. array.filter { it % 2 == 0 }.forEach { println(it) } // => 2,4 }

Output:

2,4, 2,4, 2,4,

map 함수

map 함수는 목록의 요소를 변경하여 받아올 수 있다.

// 이름과 연령을 갖는 클래스 정의 private class Person(val name: String, val age: Int) fun main() { val array = arrayOf( Person("Charlie", 20), Person("devkuma", 31), Person("kimkc", 42), ) // lambda으로 user 인스턴스를 받아 올수 있다. array.map({ user -> user.name }).forEach { print("${it},") } println() // 괄호'()'은 생략할 수 있다. array.map { user -> user.name }.forEach { print("${it},") } println() // 'it'으로 객체를 받아 올 수 있다(이 'it'는 user 인스턴스를 가르킨다). array.map { it.name }.forEach { print("${it},") } }

Output:

Charlie,devkuma,kimkc, Charlie,devkuma,kimkc, Charlie,devkuma,kimkc,

sum 함수

sum 함수는 입력한 숫자를 합산한다.

fun main() { // Array<Int> 인스턴스 생성한다. val array = arrayOf(1, 2, 3, 4, 5) // 합산한다(1 + 2 + 3 + 4 + 5). println(array.sum()) // => 15 }

Output:

15

take 함수

take 함수는 목록의 요소를 입력한 숫자 만큼만 가져온다.

fun main() { val array = arrayOf(1, 2, 3, 4, 5) array.take(1).forEach { print(it) } // => 1 println() array.take(2).forEach { print(it) } // => 1, 2 println() array.take(3).forEach { print(it) } // => 1, 2, 3 println() array.take(4).forEach { print(it) } // => 1, 2, 3, 4 println() array.take(5).forEach { print(it) } // => 1, 2, 3, 4, 5 }

Output:

1 12 123 1234 12345

drop 함수

drop 함수는 목록의 요소를 앞에서 부터 입력한 숫자 만큼 제거하고 가져온다.

fun main() { val array = arrayOf(1, 2, 3, 4, 5) array.drop(1).forEach{print(it)} // => 2, 3, 4, 5 println() array.drop(2).forEach{print(it)} // => 3, 4, 5 println() array.drop(3).forEach{print(it)} // => 4, 5 println() array.drop(4).forEach{print(it)} // => 5 println() array.drop(5).forEach{print(it)} // => 빈 Array }

Output:

2345 345 45 5



최종 수정 : 2024-09-15