반응형
Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
Tags
- filternotnull
- 티스토리챌린지
- javamailsender
- 스프링 부트
- Spring
- portconflict
- map
- Spring Boot
- java
- 오블완
- Stream
- Token
- kotlin
- foreachindexed
- 웹서버오류
- sumof
- 서버실행실패
- 코틀린
- entity
- 8080error
- 토큰기반인증
- JPA
- 객체지향
- JPQL
- 스프링
- JWT
- 토큰
- api인증
- devpi
- 자바
Archives
- Today
- Total
DeveloPiano
[Kotlin] 코틀린(Kotlin) forEachIndexed 완벽 가이드 본문
반응형
코틀린(Kotlin)에서는 컬렉션을 순회할 때 for 문뿐만 아니라 다양한 반복 함수가 제공됩니다. 그중에서도 forEachIndexed는 인덱스와 요소를 함께 사용할 수 있어 리스트나 배열을 다룰 때 매우 유용한 함수입니다. 이번 포스팅에서는 forEachIndexed 함수의 개념과 실용적인 사용법을 예제와 함께 살펴보겠습니다.
📌 forEachIndexed 함수란?
코틀린의 forEachIndexed 함수는 forEach 함수와 유사하지만, 요소뿐만 아니라 인덱스도 함께 제공하는 특징이 있습니다.
🔹 기본 문법
inline fun <T> Iterable<T>.forEachIndexed(action: (index: Int, T) -> Unit)
- Iterable<T>: 리스트, 배열 등 컬렉션을 반복할 수 있는 인터페이스
- action: (index: Int, T) -> Unit: 인덱스와 요소를 인자로 받아 원하는 작업을 수행하는 함수
이 함수는 컬렉션의 각 요소를 순회하면서, 현재 요소의 인덱스와 값을 함께 처리할 수 있도록 합니다.
🛠 forEachIndexed 사용 예제
1️⃣ 리스트(List)에서 forEachIndexed 사용하기
fun main() {
val names = listOf("Alice", "Bob", "Charlie")
names.forEachIndexed { index, name ->
println("$index: $name")
}
}
출력:
0: Alice
1: Bob
2: Charlie
위 코드에서 forEachIndexed를 사용하면 index와 name을 동시에 가져올 수 있습니다.
2️⃣ 배열(Array)에서 forEachIndexed 사용하기
fun main() {
val numbers = arrayOf(10, 20, 30, 40)
numbers.forEachIndexed { index, value ->
println("Index $index: Value $value")
}
}
출력:
Index 0: Value 10
Index 1: Value 20
Index 2: Value 30
Index 3: Value 40
배열에서도 동일하게 인덱스와 요소를 함께 사용할 수 있습니다.
3️⃣ 특정 조건이 있는 경우
forEachIndexed를 활용하여 특정 조건을 만족하는 요소만 출력할 수도 있습니다.
fun main() {
val numbers = listOf(5, 15, 25, 35, 45)
numbers.forEachIndexed { index, value ->
if (value > 20) {
println("$index 번째 값 $value 는 20보다 큽니다.")
}
}
}
출력:
2 번째 값 25 는 20보다 큽니다.
3 번째 값 35 는 20보다 큽니다.
4 번째 값 45 는 20보다 큽니다.
4️⃣ for 문과 forEachIndexed 비교
방식코드 스타일장점
for 문 | for (i in list.indices) { println("$i: ${list[i]}") } | 명확한 반복이 필요할 때 사용 |
forEachIndexed | list.forEachIndexed { index, value -> println("$index: $value") } | 가독성이 좋고 간결함 |
forEachIndexed는 간결하고 가독성이 뛰어나며, 인덱스와 값을 직관적으로 사용할 수 있는 장점이 있습니다.
🎯 forEachIndexed 사용 시 주의할 점
✅ 성능 고려:
- forEachIndexed는 내부적으로 for 문을 사용하여 동작하므로, 단순 반복 작업에서는 for 문과 성능 차이가 크지 않습니다.
- 하지만 성능이 중요한 경우(예: 매우 큰 리스트를 다룰 때) 반복 횟수를 줄이는 최적화가 필요할 수 있습니다.
✅ 조기 종료 불가능:
- forEachIndexed 내부에서는 return을 사용할 수 있지만, 이는 현재 람다 함수만 종료할 뿐 전체 반복을 멈출 수는 없습니다.
- 전체 반복을 조기 종료하려면 for 문과 break를 사용하는 것이 좋습니다.
fun main() {
val numbers = listOf(1, 2, 3, 4, 5)
for (i in numbers.indices) {
if (numbers[i] == 3) break // 반복 중단
println(numbers[i])
}
}
✅ null 값 처리:
- 리스트 요소가 null을 포함할 수 있는 경우, filterNotNull()을 먼저 적용하는 것이 안전합니다.
fun main() {
val list = listOf("A", null, "B", "C")
list.filterNotNull().forEachIndexed { index, value ->
println("$index: $value")
}
}
✨ 결론
코틀린의 forEachIndexed 함수는 컬렉션을 순회하면서 인덱스와 요소를 함께 활용할 수 있는 강력한 함수입니다.
✅ forEachIndexed를 사용하면:
- for 문보다 코드가 간결하고 가독성이 좋다
- 배열과 리스트의 인덱스와 요소를 동시에 활용할 수 있다
- 특정 조건을 만족하는 요소만 쉽게 필터링할 수 있다
단, 조기 종료가 필요하거나 성능이 중요한 경우 for 문이 더 적합할 수 있습니다.
이제 forEachIndexed를 적극 활용하여 더욱 깔끔하고 효율적인 코드를 작성해 보세요! 🚀
반응형
'Develop > Kotlin' 카테고리의 다른 글
[Kotlin] 코틀린 for 문에서 until과 .. 차이점 완벽 정리 (0) | 2025.03.04 |
---|---|
[Kotlin] indices 속성 완벽 가이드 (1) | 2025.03.03 |
[Kotlin] sumOf 함수 (0) | 2025.02.26 |
[Kotlin] check() vs require(): if 문과의 비교 (0) | 2025.01.31 |
[Kotlin] Map과 MutableMap : 읽기 전용과 변경 가능한 Map의 차이점 (0) | 2024.11.14 |