22.08.10 TIL (Kotlin 배열, 리스트 자르기)

ddanglehee·2022년 8월 10일
0

TIL

목록 보기
1/9

📌 Kotlin 문법

배열, 리스트 자르기

📍 slice(), sliceArray()

fun <T> Array<out T>.slice(indices: IntRange): List<T>
fun <T> List<T>.slice(indices: IntRange): List<T>
fun <T> Array<T>.sliceArray(indices: IntRange): Array<T>
  • Array나 List를 원하는 구간만 잘라서 새로운 List를 만들고 싶을 때 사용
  • 원본 객체는 변경되지 않는다.

예시)

  val array = intArrayOf(0, 1, 2, 3, 4, 5)
  val slicedList = array.slice(2..5)
  val slicedArray = array.sliceArray(IntRange(2, 5))
  
  println(array.contentToString()) // [0, 1, 2, 3, 4, 5]
  println(slicedList) // [2, 3, 4, 5]
  println(slicedArray.contentToString()) // [2, 3, 4, 5]

📍 copyOfRange()

fun <T> Array<T>.copyOfRange(
    fromIndex: Int,
    toIndex: Int
): Array<T>
  • Array를 원하는 구간만 잘라서 새로운 Array를 만들고 싶을 때 사용.
    Array.slice(), sliceArray() 내부에서 호출되는 메소드임
  • fromIndex ~ toIndex - 1구간으로 배열을 자름
  • 원본 배열은 변경되지 않는다.

예시)

  val array = intArrayOf(0, 1, 2, 3, 4, 5)
  val copiedArray = array.copyOfRange(2, 5)
  println(copiedArray.contentToString()) // [2, 3, 4]

📍 subList()

abstract fun subList(fromIndex: Int, toIndex: Int): List<E>
  • List를 원하는 구간만 잘라서 보여주고 싶을 때 사용
  • 원본 리스트와 같은 메모리 공간을 사용
  • fromIndex ~ toIndex - 1구간으로 리스트를 자름
  • 원본 리스트는 변경되지 않는다.

예시)

    val list = mutableListOf(0, 1, 2, 3, 4, 5)
    val subList = list.subList(2, 5)
    println(list) // [0, 1, 2, 3, 4, 5]
    println(subList) // [2, 3, 4]

🌠 slice()와 subList()의 차이점

slice()는 원본 List를 잘라 새로운 List를 만들어 리턴하지만, subList()는 원본 List를 원하는 구간만큼만 잘라서 보여준다.
예시)

   val list = mutableListOf(0, 1, 2, 3, 4, 5)

    val slicedList = list.slice(2..5)
    val subList = list.subList(2, 6)
    println(slicedList) // [2, 3, 4, 5]
    println(subList) // [2, 3, 4, 5]

    list[2] = 1 // 원본리스트에 변경 생김
    println(slicedList) // [2, 3, 4, 5]
    println(subList) // [1, 3, 4, 5]

참고

profile
잊고싶지 않은 것들을 기록해요✏️

0개의 댓글