1. 배열
배열은 동일한 자료형을 가진 데이터들을 나열한 구조이다.
위 그림은 정수형 데이터 항목을 가지고 있는 배열이다.
배열의 이름은 array로 정수형 데이터 10, 20, 30, 40이 저장되어 있다.
데이터 항목에는 인덱스(index)를 사용하여 접근하며, 인덱스(index)는 배열의 순서로, 0부터 시작한다.
이제 배열을 선언하는 방법에 대해 알아보자.
배열을 선언하는 방법은 크게 3가지로, arrayOf, (int)ArrayOf, Array 가 있다.
2. 배열 선언 (1) arrayOf
val 변수명 = arrayOf<자료형/생략>(값1, 값2, 값3)
자료형은 생략 가능하며, 배열의 크기는 항목의 개수에 따라 자동으로 결정된다.
아래는 자료형을 생략한 예제이다.
// 1. 문자열 배열
val fruits = arrayOf("Apple", "Banana", "Orange")
// 2. 정수 배열
val numbers = arrayOf(1, 2, 3, 4, 5)
// 3. 실수 배열
val temperatures = arrayOf(23.5, 26.1, 21.7, 24.9)
// 4. 객체 배열
data class Person(val name: String, val age: Int)
val person1 = Person("John", 25)
val person2 = Person("Jane", 30)
val person3 = Person("Mike", 28)
val people = arrayOf(person1, person2, person3)
다음은 자료형을 생략하지 않은 예제이다.
// 1. 문자열 배열
val fruits: Array<String> = arrayOf("Apple", "Banana", "Orange")
// 2. 정수 배열
val numbers: Array<Int> = arrayOf(1, 2, 3, 4, 5)
// 3. 실수 배열
val temperatures: Array<Double> = arrayOf(23.5, 26.1, 21.7, 24.9)
// 4. 객체 배열
data class Person(val name: String, val age: Int)
val person1: Person = Person("John", 25)
val person2: Person = Person("Jane", 30)
val person3: Person = Person("Mike", 28)
val people: Array<Person> = arrayOf(person1, person2, person3)
다만, 자료형을 작성했을 경우, 해당 자료형만 인자로 들어올 수 있다.
다음은 자료형을 대체할 수 있는 예제이다.
val 변수명 = (자료형)ArrayOf(값1, 값2, 값3)
ArrayOf 앞에 자료형을 붙이면 된다.
// 1. 문자열 배열
val fruits: Array<String> = arrayOf("Apple", "Banana", "Orange")
// 2. 정수 배열
val numbers: IntArray = intArrayOf(1, 2, 3, 4, 5)
// 3. 실수 배열
val temperatures: DoubleArray = doubleArrayOf(23.5, 26.1, 21.7, 24.9)
// 4. 객체 배열
data class Person(val name: String, val age: Int)
val person1: Person = Person("John", 25)
val person2: Person = Person("Jane", 30)
val person3: Person = Person("Mike", 28)
val people: Array<Person> = arrayOf(person1, person2, person3)
문자열과 객체를 저장하는 함수는 존재하지 않아 문자열을 배열로 저장할 때는 arrayOf를 사용해야 한다.
2. 배열 선언 (2) (자료형)Array
다음은 Array로 배열을 선언하는 예제이다.
이 방법 또한 자료형을 생략할 수 있고, 생략하지 않을 수도 있다.
var 변수명 = (자료형)Array(크기, {초기값(생략가능)})
var array = IntArray(10, {0})
array는 10 크기를 가지고, 기본값으로 0이 들어간다.
여기서 주의할 점은 중괄호{} 안의 값은 초기값을 인자로 받기 때문에
'var array = Array(10, {1, 2, 3})' 은 올바르지 않은 코드이다.
val numbers = IntArray(5) { index -> index + 1 }
만약, 크기가 5인 정수 배열을 생성하고 각 요소를 1부터 시작하여 순차적으로 초기화할 경우에는 이렇게 작성한다.
index는 현재 요소의 순서를 나타내며, index+1을 통해 1부터 시작하는 값을 할당한다.
자료형을 생략하는 예제
// 1. 문자열 배열
val fruits = Array(3) { index -> "Fruit ${index + 1}" }
// 2. 정수 배열
val numbers = Array(5) { index -> index + 1 }
// 3. 실수 배열
val temperatures = Array(4) { index -> 20.0 + (index * 2.5) }
// 4. 객체 배열
data class Person(val name: String, val age: Int)
val people = Array(2) { index ->
Person("Person ${index + 1}", (index + 1) * 10)
}
자료형을 생략하지 않는 예제
// 1. 문자열 배열
val fruits: Array<String> = Array(3) { index -> "Fruit ${index + 1}" }
// 2. 정수 배열
val numbers: IntArray = IntArray(5) { index -> index + 1 }
// 3. 실수 배열
val temperatures: DoubleArray = DoubleArray(4) { index -> 20.0 + (index * 2.5) }
// 4. 객체 배열
data class Person(val name: String, val age: Int)
val people: Array<Person> = Array(2) { index ->
Person("Person ${index + 1}", (index + 1) * 10)
}
문자열 배열 StringArray는 따로 존재하지 않기 때문에 Array을 이용하여 문자열 배열을 다룬다.
3. 배열 선언 (3) Array<자료형(생략가능)>
var array = Array<자료형>(크기, {값(생략가능)})
배열을 선언하는 두 번째 방법과 비슷하지만 다르다.
var array = Array<Int>(10, {0})
두 번째 방법은 Array앞에 자료형을 붙였다면, 세 번째 방법은 <> 괄호 안에 자료형이 들어가며, 자료형을 생략하고 Array만 작성한다.
자료형을 생략하지 않는 예제
// 1. 문자열 배열
val fruits: Array<String> = Array<String>(3) { index -> "Fruit ${index + 1}" }
// 2. 정수 배열
val numbers: Array<Int> = Array<Int>(5) { index -> index + 1 }
// 3. 실수 배열
val temperatures: Array<Double> = Array<Double>(4) { index -> 20.0 + (index * 2.5) }
// 4. 객체 배열
data class Person(val name: String, val age: Int)
val people: Array<Person> = Array<Person>(2) { index ->
Person("Person ${index + 1}", (index + 1) * 10)
}
자료형을 생략하는 예제
// 1. 문자열 배열
val fruits = Array(3) { index -> "Fruit ${index + 1}" }
// 2. 정수 배열
val numbers = Array(5) { index -> index + 1 }
// 3. 실수 배열
val temperatures = Array(4) { index -> 20.0 + (index * 2.5) }
// 4. 객체 배열
data class Person(val name: String, val age: Int)
val people: Array<Person> = Array(2) { index ->
Person("Person ${index + 1}", (index + 1) * 10)
}
4. 배열에 접근하기
1) 배열[index] = 값
array[2] = 50
array[1] = 15
접근하고자 하는 배열에 인덱스를 붙여 접근할 수 있다.
2) 배열.set(index, 값)
array.set(1, 10)
array.set(2, 5)
첫 번째 방법과 마찬가지로 특정 인덱스에 값을 설정하여 해당 인덱스 요소를 변경한다.
3) 배열.get(index)
array.get(1)
array.get(2)
get은 해당 인덱스의 요소를 가져온다.
'Kotlin' 카테고리의 다른 글
[Kotlin] 코틀린 확장 함수(Extension Function), 확장 프로퍼티(Extension Property) (0) | 2024.07.11 |
---|---|
[Kotlin] 코틀린 컬렉션 (Collection) (0) | 2023.05.17 |
[Kotlin] 코틀린 반복문 for, while, do while 반복문 활용 (0) | 2023.05.08 |
[Kotlin] 코틀린 조건문 if-else 와 when 사용법 파헤치기 (0) | 2023.05.03 |
[Kotlin] 코틀린 메소드 (Method) 선언하기 : 메소드 정의, 함수의 타입, 매개변수, 반환값 정의 방법 (0) | 2023.05.02 |