Computer >> 컴퓨터 >  >> 프로그래밍 >> Android

Kotlin에서 forEach 루프로 배열의 현재 인덱스를 얻는 방법

코틀린(Kotlin)으로 개발하다 보면 배열이나 리스트를 순회하면서 현재 요소의 인덱스가 필요한 경우가 자주 발생합니다. 일반적인 forEach() 함수는 값만 전달하기 때문에 인덱스에 직접 접근할 수 없는데요. 이번 글에서는 코틀린에서 forEach 루프를 사용하면서도 인덱스에 접근할 수 있는 두 가지 방법을 소개합니다.

방법 1: forEachIndexed() 사용하기

첫 번째 방법은 forEach() 대신 forEachIndexed()를 사용하는 것입니다. forEachIndexed는 코틀린 표준 라이브러리에서 제공하는 인라인(inline) 함수로, 컬렉션을 입력받아 각 요소의 인덱스을 분리해서 접근할 수 있게 해줍니다.

아래 예제에서는 "Subject" 리스트를 순회하면서 각 항목의 인덱스와 값을 함께 출력해 보겠습니다.

예제 코드

fun main() {
   var subject = listOf("Java", "Kotlin", "JS", "C")

   subject.forEachIndexed { index, element ->
      println("index = $index, item = $element ")
   }
}

실행 결과

위 코드를 실행하면 다음과 같은 결과가 출력됩니다.

index = 0, item = Java
index = 1, item = Kotlin
index = 2, item = JS
index = 3, item = C

방법 2: withIndex() 사용하기

두 번째 방법은 코틀린의 라이브러리 함수인 withIndex()를 활용하는 것입니다. withIndex()를 사용하면 배열의 인덱스와 해당 값을 동시에 얻을 수 있으며, 구조 분해 선언(destructuring declaration)과 함께 for 루프 안에서 사용해야 합니다.

앞선 예제와 동일한 배열을 사용하여, 이번에는 withIndex()로 인덱스와 값을 출력해 보겠습니다.

예제 코드

fun main() {
   var subject = listOf("Java", "Kotlin", "JS", "C")

   for ((index, value) in subject.withIndex()) {
      println("The subject of $index is $value")
   }
}

실행 결과

위 코드를 실행하면 다음과 같은 결과가 출력됩니다.

The subject of 0 is Java
The subject of 1 is Kotlin
The subject of 2 is JS
The subject of 3 is C

정리

코틀린에서 인덱스와 값을 함께 순회하고 싶다면 forEachIndexed() 또는 withIndex()를 사용하면 됩니다. 람다 스타일의 간결한 코드를 원한다면 forEachIndexed()를, 기존의 for 루프 문법을 유지하고 싶다면 withIndex()를 선택하는 것이 좋습니다. 두 방법 모두 성능 차이는 거의 없으므로 코드의 가독성과 상황에 맞게 선택하시면 됩니다.