Bird
Raised Fist0
Kotlinprogramming~15 mins

Iterating collections with forEach in Kotlin - Mini Project: Build & Apply

Choose your learning style10 modes available
Iterating collections with forEach
📖 Scenario: You are helping a small bookstore manage its inventory. You have a list of book titles and want to print each title to check the stock.
🎯 Goal: Learn how to use the forEach function in Kotlin to go through each item in a list and print it.
📋 What You'll Learn
Create a list of book titles with exact values
Create a variable to count the number of books
Use forEach to print each book title
Print the total number of books after listing them
💡 Why This Matters
🌍 Real World
Bookstores and libraries often need to list and count their inventory. Using <code>forEach</code> helps to process each item easily.
💼 Career
Knowing how to iterate collections is essential for many programming jobs, especially when working with data lists or user inputs.
Progress0 / 4 steps
1
Create a list of book titles
Create a list called books with these exact titles: "The Hobbit", "1984", "Pride and Prejudice", "To Kill a Mockingbird"
Kotlin
Hint

Use listOf to create a list with the given book titles.

2
Create a variable to count books
Create a variable called bookCount and set it to the size of the books list
Kotlin
Hint

Use the size property of the list to get the number of books.

3
Use forEach to print each book title
Use books.forEach with a lambda that takes a parameter called book and prints it
Kotlin
Hint

Use forEach with a lambda that prints each book.

4
Print the total number of books
Write a println statement that prints exactly: Total books: 4 using the bookCount variable inside an f-string
Kotlin
Hint

Use println("Total books: $bookCount") to show the total count.

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