본문 바로가기

Kotlin

[Kotlin] 배열 사용, 출력 방법

728x90

배열이란?

동일한 자료형을 가진 데이터를 순차적으로 저장한 자료구조입니다.


자바에서 배열 선언

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을 더 많이 사용하는 이유

  1. 안정성
    참조를 변경하지 않겠다는 의도를 명확히 하여, 코드의 안정성을 높이고 유지보수성을 향상시킵니다.
  2. 불변성 지향
    코틀린은 불변성을 지향하기 때문에, 가능한 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()
728x90