1. 기본 사용법
- 범위 반복:
for (i in 1..5) { // 1부터 5까지 반복 println(i) }
1..5
는 1부터 5까지의 범위를 나타냅니다.
- 컬렉션 반복:
val fruits = listOf("apple", "banana", "cherry") for (fruit in fruits) { println(fruit) }
- 컬렉션의 각 요소를 순회합니다.
2. 다양한 범위 표현
until
:for (i in 1 until 5) { // 1부터 4까지 반복 (5 제외) println(i) }
until
은 지정된 값 바로 이전까지의 범위를 생성합니다.
downTo
:for (i in 5 downTo 1) { // 5부터 1까지 감소하며 반복 println(i) }
downTo
는 값을 감소시키며 범위를 생성합니다.
step
:for (i in 1..10 step 2) { // 1부터 10까지 2씩 증가하며 반복 println(i) }
step
은 지정된 값만큼 증가 또는 감소하며 범위를 생성합니다.
3. 인덱스와 함께 반복
withIndex()
:val fruits = listOf("apple", "banana", "cherry") for ((index, fruit) in fruits.withIndex()) { println("Index: $index, Fruit: $fruit") }
withIndex()
는 인덱스와 값을 함께 제공합니다.
4. forEach
와 람다 표현식
forEach
함수는 람다 표현식과 함께 사용하여 컬렉션의 각 요소에 대한 작업을 수행할 수 있습니다.val numbers = listOf(1, 2, 3, 4, 5) numbers.forEach { number -> println(number * 2) }
- 이 방식은 특히 간단한 연산이나 로직을 각 요소에 적용할 때 유용합니다.
- 인덱스를 활용한
forEachIndexed
val numbers = listOf(1, 2, 3, 4, 5) numbers.forEachIndexed { index, number -> println("index : $index number : $number") }
5. for
루프의 활용 예시
- 배열 순회 및 값 변경:
val array = intArrayOf(1, 2, 3, 4, 5) for (i in array.indices) { // 배열의 인덱스 범위 순회 array[i] *= 2 } println(array.contentToString()) // [2, 4, 6, 8, 10] 출력
- 맵(Map) 순회:
val map = mapOf("a" to 1, "b" to 2, "c" to 3) for ((key, value) in map) { println("Key: $key, Value: $value") }
- 중첩 루프:
for (i in 1..3) { for (j in 1..3) { println("i: $i, j: $j") } }
6. 라벨을 통한 break와 continue
- 중첩 루프에서 특정 루프를 빠져나오거나 건너뛰기 위해 라벨을 사용할 수 있습니다.
loop@ for (i in 1..5) { for (j in 1..5) { if (i == 3 && j == 3) break@loop // 바깥쪽 루프 종료 println("i: $i, j: $j") } }
7. 컬렉션의 인덱스 순회.
- 배열이나 리스트의 index값을 활용하여 순회.
val list = listOf("a","b","c") for (i in list.indices){ println("index : $i , value : ${list[i]}") }
코틀린의 for
루프는 이러한 다양한 기능을 제공하며, 이러한 기능들을 통해 더욱 효율적이고 가독성 높은 코드를 작성할 수 있습니다.