본문 바로가기
2학년 2학기/모바일 소프트웨어 - 코틀린

Array, Generic, Collection) Array(2) - 배열 관련 연산

by kkkkk1023 2024. 10. 11.

이번에는 배열과 관련된 연산들에 대해서 배워보자.

  • 배열 객체 복사
  • 배열 원소 추가
  • 배열 원소 선택(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