Kotlin Control Flow Statements
Estimated reading: 3 minutes 282 views

Kotlin – For Loop: Iterate Collections, Ranges & Arrays

Introduction – Why Learn Kotlin For Loops?

In Kotlin, the for loop is a powerful and concise way to iterate over collections, ranges, arrays, and strings. It eliminates boilerplate code found in traditional Java loops while adding readability and expressive power to Kotlin applications.

In this guide, you’ll learn:

  • How Kotlin for loop works with different data types
  • Looping through ranges, arrays, collections, and strings
  • Using indices, withIndex(), and step control
  • Real-world examples and best practices

Basic For Loop Over a Range

for (i in 1..5) {
    println("Count: $i")
}

Output:

Count: 1  
Count: 2  
Count: 3  
Count: 4  
Count: 5  
  • 1..5 defines a closed range from 1 to 5.
  • i is the loop variable.

Looping with Step, DownTo, and Until

step – Custom Increment

for (i in 1..10 step 2) {
    println(i)
}

Output: 1 3 5 7 9


downTo – Reverse Order

for (i in 5 downTo 1) {
    println(i)
}

Output: 5 4 3 2 1


until – Exclusive Upper Bound

for (i in 0 until 5) {
    println(i)
}

Output: 0 1 2 3 4 (excludes 5)


Iterating Through Arrays and Lists

Array Iteration

val nums = arrayOf(10, 20, 30)

for (n in nums) {
    println(n)
}

List Iteration

val names = listOf("Alice", "Bob", "Charlie")

for (name in names) {
    println("Hi $name")
}

Iterating Through a String

val text = "Kotlin"

for (char in text) {
    println(char)
}

Output: K o t l i n


Accessing Index with indices and withIndex()

Using indices:

val items = listOf("A", "B", "C")

for (i in items.indices) {
    println("Item at $i is ${items[i]}")
}

Using withIndex():

val items = listOf("X", "Y", "Z")

for ((index, value) in items.withIndex()) {
    println("Item #$index = $value")
}

Nested For Loops

for (i in 1..2) {
    for (j in 1..3) {
        println("i=$i, j=$j")
    }
}

Best Practices

TipWhy It Matters
Use withIndex() over manual indexingCleaner and safer
Use step and downTo for better controlSimplifies loop direction logic
Prefer for over while when range/collection is knownMore readable and idiomatic

Common Mistakes

Mistake Fix
Off-by-one with until or ..Remember .. includes end, until does not
Using Java-style loops unnecessarilyUse Kotlin idioms like for (item in list)
Ignoring index when neededUse withIndex() or indices

Summary – Recap & Next Steps

Kotlin’s for loop is versatile and concise, supporting ranges, collections, and strings with clean syntax. It improves on Java’s loop constructs and promotes more readable and maintainable code.

Key Takeaways:

  • Use for (item in collection) for safe and clean iteration.
  • Use step, downTo, and until for control.
  • Access indices with indices or withIndex().
  • Prefer for when looping over known-size sequences.

Practical Use:
Ideal for iterating API results, processing form inputs, looping UI elements, and data validation in Android or server-side Kotlin apps.


FAQs – Kotlin For Loop

Can I loop in reverse in Kotlin?
Yes. Use downTo:

for (i in 10 downTo 1) { ... }

What’s the difference between .. and until?
.. is inclusive, until excludes the upper bound:

1..5 → 1 2 3 4 5  
1 until 5 → 1 2 3 4

How do I get both index and value in a loop?
Use withIndex():

for ((i, v) in list.withIndex()) { ... }

Can I use for to iterate over a map?
Yes:

val map = mapOf("A" to 1, "B" to 2)
for ((key, value) in map) {
    println("$key -> $value")
}

Is for better than while in Kotlin?
Use for when iterating over collections or ranges. Use while for unknown bounds or conditional loops.


Share Now :
Share

Kotlin – For Loop

Or Copy Link

CONTENTS
Scroll to Top