이번에는 배열과 관련된 연산들에 대해서 배워보자.
- 배열 객체 복사
- 배열 원소 추가
- 배열 원소 선택(slice)
- 배열 원소 순환(map)
- 배열 정렬
기본적으로 연산관련 메소드는 List를 대상으로 만들어진 것이기 때문에 Array의 연산을 하려면 "메소드Array" 형식으로 진행해야한다.
배열 객체 복사
fun main() {
val origanlArr = arrayOf(1, 2, 3)
val arr1 = origanlArr // 배열 객체 자체를 복사
val arr2 = Array(origanlArr.size) { i -> origanlArr[i] } // 배열의 사이즈와 연산을 사용
val arr3 = origanlArr.clone() // 배열 객체를 복사하는 메서드 사용
}
배열 원소 추가
fun main() {
val origanlArr = arrayOf(1, 2, 3, 4, 5)
val subArr = arrayOf(6, 7, 8)
var newArr1 = origanlArr.plus(subArr)
println(newArr1.contentToString()) //[1, 2, 3, 4, 5, 6, 7, 8]
var newArr2 = origanlArr + subArr
println(newArr2.contentToString()) //[1, 2, 3, 4, 5, 6, 7, 8]
newArr1 += 9
println(newArr1.contentToString()) //[1, 2, 3, 4, 5, 6, 7, 8, 9]
}
배열 원소 선택(slice)
fun main() {
val arr = arrayOf("one", "two", "three", "four", "five")
val slicedArr = arr.sliceArray(1..2)
println(slicedArr.contentToString()) //[two, three]
}
배열을 slice할 때는 sliceArray라고 사용했어야했지만, List를 slice할 때는 slice만 사용해도 된다. 따라서 배열에 slice만 사용하면 리스트로 변경된다.
fun main() {
val arr = arrayOf("one", "two", "three", "four", "five")
val slicedArr = arr.sliceArray(1..2)
println(slicedArr.contentToString()) //[two, three]
val slicedList: List<String> = arr.slice(0..arr.size step 2) //slice만 사용
println(slicedList) //[one, three, five]
}
배열 원소 순환(map)
map을 사용하면 배열이 리스트로 변경된다.
fun main() {
val arr = arrayOf(1, 2, 3, 4, 5)
val copyArr = arr.clone()
copyArr.forEach { print("${it*2} ") } //2 4 6 8 10
val dstArr: List<Int> = copyArr.map { it * 2}
println(dstArr) //[2, 4, 6, 8, 10]
}
map의 기능은 forEach를 통해서 구현할 수 있다.
배열 정렬
import kotlin.random.Random
fun main(){
val arr: Array<Int> = Array(5){ Random.nextInt(1, 200) } // 1~200의 중 무작위 5개를 배열로
println(arr.contentToString()) // [1, 75, 185, 182, 166]
val upSortedArr = arr.sortedArray() // 오름 차순
println(upSortedArr.contentToString()) // [1, 75, 166, 182, 185]
val downSortedArr = arr.sortedArrayDescending() // 내림 차순
println(downSortedArr.contentToString()) // [185, 182, 166, 75, 1]
}
'2학년 2학기 > 모바일 소프트웨어 - 코틀린' 카테고리의 다른 글
1~5장 교수님 블로그 (1) | 2024.10.12 |
---|---|
it과 this (2) | 2024.10.12 |
Array, Generic, Collection) Array(1) - 배열의 생성 (0) | 2024.10.11 |
Class(2) - 범위 함수 (0) | 2024.10.11 |
Class(2) - data class (0) | 2024.10.11 |