Bird
Raised Fist0
Kotlinprogramming~10 mins

Iterating collections with forEach in Kotlin - Step-by-Step Execution

Choose your learning style10 modes available
Concept Flow - Iterating collections with forEach
Start with collection
↓
Call forEach on collection
↓
Take first element
↓
Execute lambda with element
↓
Take next element?
No→End
↩Back to Execute lambda
The forEach function takes each element from a collection one by one and runs the given code block (lambda) on it until all elements are processed.
Execution Sample
Kotlin
val numbers = listOf(1, 2, 3)
numbers.forEach { n ->
    println(n * 2)
}
This code goes through each number in the list and prints double its value.
Execution Table
StepCurrent Element (n)ActionOutput
11Execute lambda: println(1 * 2)2
22Execute lambda: println(2 * 2)4
33Execute lambda: println(3 * 2)6
4-No more elements, forEach ends-
💡 All elements processed, forEach stops
Variable Tracker
VariableStartAfter 1After 2After 3Final
n-123-
Key Moments - 2 Insights
Why does the variable 'n' change each step inside forEach?
Because forEach takes each element from the collection one by one and assigns it to 'n' before running the lambda, as shown in execution_table rows 1 to 3.
Does forEach return a new collection or change the original?
No, forEach only runs the code on each element and returns Unit (nothing). It does not create or change collections, as seen by no changes in variable_tracker except 'n' during iteration.
Visual Quiz - 3 Questions
Test your understanding
Look at the execution table, what is the output when 'n' is 2?
A4
B2
C6
D8
💡 Hint
Check row 2 in the execution_table where n=2 and output is printed
At which step does forEach stop running the lambda?
AStep 3
BStep 4
CStep 1
DStep 2
💡 Hint
Look at the exit note and step 4 in execution_table where no more elements remain
If the list had one more element 4, how many times would the lambda run?
A3 times
B5 times
C4 times
D1 time
💡 Hint
forEach runs once per element, so check variable_tracker for count of elements
Concept Snapshot
forEach iterates over each element in a collection.
Syntax: collection.forEach { element -> /* code */ }
Runs the code block for every element.
Does not return a new collection.
Useful for actions like printing or updating UI.
Full Transcript
This example shows how to use forEach in Kotlin to go through each item in a list. The code takes each number and prints double its value. The flow starts by calling forEach on the list, then for each element, it runs the lambda code. The variable 'n' holds the current element and changes each step. The execution table shows each step with the current element and output. The process stops when all elements are done. forEach does not create or change collections, it just runs code on each item.

Practice

(1/5)
1. What does the forEach function do when used on a list in Kotlin?
easy
A. It runs a block of code for each item in the list.
B. It creates a new list with modified items.
C. It removes items from the list.
D. It sorts the list in ascending order.

Solution

  1. Step 1: Understand the purpose of forEach

    The forEach function is designed to execute a given block of code on every element in a collection.
  2. Step 2: Compare options with forEach behavior

    Only It runs a block of code for each item in the list. correctly describes this behavior. Options B, C, and D describe other functions like map, remove, and sort.
  3. Final Answer:

    It runs a block of code for each item in the list. -> Option A
  4. Quick Check:

    forEach = run code on each item [OK]
Hint: forEach runs code on every element, not changing the list [OK]
Common Mistakes:
  • Confusing forEach with map that creates new lists
  • Thinking forEach modifies the list itself
  • Assuming forEach sorts or filters the list
2. Which of the following is the correct syntax to print each element of a list numbers using forEach in Kotlin?
easy
A. numbers.forEach -> println(it)
B. forEach(numbers) { println(it) }
C. numbers.forEach { println(it) }
D. numbers.forEach(println(it))

Solution

  1. Step 1: Recall the correct forEach syntax

    In Kotlin, forEach is called on the collection with a lambda block: collection.forEach { item -> ... }. The shorthand uses it for the current item.
  2. Step 2: Check each option's syntax

    numbers.forEach { println(it) } matches the correct syntax. forEach(numbers) { println(it) } wrongly uses forEach as a function with the list as argument. numbers.forEach(println(it)) incorrectly calls println inside forEach parentheses. numbers.forEach -> println(it) uses an invalid arrow syntax.
  3. Final Answer:

    numbers.forEach { println(it) } -> Option C
  4. Quick Check:

    Correct forEach syntax = numbers.forEach { println(it) } [OK]
Hint: Use collection.forEach { println(it) } to print items [OK]
Common Mistakes:
  • Calling forEach as a standalone function
  • Passing println(it) directly inside forEach parentheses
  • Using arrow (->) outside lambda block
3. What will be the output of the following Kotlin code?
val fruits = listOf("apple", "banana", "cherry")
fruits.forEach { println(it.length) }
medium
A. 5 6 6
B. 5 6 6
C. apple banana cherry
D. 3 6 6

Solution

  1. Step 1: Understand the code behavior

    The list fruits contains three strings: "apple", "banana", and "cherry". The forEach prints the length of each string.
  2. Step 2: Calculate lengths and output format

    "apple" has length 5, "banana" has length 6, "cherry" has length 6. Each println prints on a new line, so output is: 5 6 6
  3. Final Answer:

    5 6 6 -> Option B
  4. Quick Check:

    Print lengths with println = lines of 5,6,6 [OK]
Hint: println prints each item on a new line [OK]
Common Mistakes:
  • Assuming output is on one line separated by spaces
  • Confusing string length with number of vowels
  • Printing the strings instead of their lengths
4. Identify the error in this Kotlin code snippet:
val nums = listOf(1, 2, 3)
nums.forEach(i -> println(i))
medium
A. Calling println inside forEach is not allowed
B. Missing parentheses after forEach
C. Using val instead of var for list
D. Using arrow (->) instead of curly braces for lambda

Solution

  1. Step 1: Check lambda syntax in Kotlin

    Kotlin uses curly braces {} for lambdas, not arrow notation like -> outside braces. The arrow is used inside the lambda to separate parameters from body.
  2. Step 2: Identify the incorrect usage

    The code uses i -> println(i) directly after forEach without braces, which is invalid syntax. Correct form is nums.forEach { i -> println(i) }.
  3. Final Answer:

    Using arrow (->) instead of curly braces for lambda -> Option D
  4. Quick Check:

    Lambda needs braces {} around arrow -> [OK]
Hint: Use { param -> code } for lambdas, not (param -> code) [OK]
Common Mistakes:
  • Using arrow notation without braces
  • Confusing Kotlin lambda syntax with other languages
  • Thinking val vs var affects forEach usage
5. Given a list of integers nums, how can you use forEach to print only the even numbers?
hard
A. nums.forEach { if (it % 2 == 0) println(it) }
B. nums.forEach { println(it % 2 == 0) }
C. nums.forEach { if (it / 2 == 0) println(it) }
D. nums.forEach { println(it) if (it % 2 == 0) }

Solution

  1. Step 1: Understand the condition for even numbers

    An even number has zero remainder when divided by 2, so it % 2 == 0 checks if a number is even.
  2. Step 2: Use if inside forEach to print only even numbers

    nums.forEach { if (it % 2 == 0) println(it) } correctly uses an if statement inside the lambda to print only when the condition is true. Other options either print booleans or have incorrect syntax.
  3. Final Answer:

    nums.forEach { if (it % 2 == 0) println(it) } -> Option A
  4. Quick Check:

    Use if inside forEach to filter printing [OK]
Hint: Use if (it % 2 == 0) inside forEach to print evens [OK]
Common Mistakes:
  • Printing boolean results instead of numbers
  • Using division instead of modulo for even check
  • Placing if after println causing syntax error
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard