Bird
Raised Fist0
Kotlinprogramming~10 mins

Filter and filterNot in Kotlin - Interactive Code Practice

Choose your learning style10 modes available
Practice - 5 Tasks
Answer the questions below
1fill in blank
easy

Complete the code to filter even numbers from the list.

Kotlin
val numbers = listOf(1, 2, 3, 4, 5)
val evens = numbers.filter { it [1] 2 == 0 }
println(evens)
Drag options to blanks, or click blank then click option'
A%
B*
C/
D+
Attempts:
3 left
💡 Hint
Common Mistakes
Using division (/) instead of modulo (%) causes wrong filtering.
Using multiplication (*) or addition (+) operators here is incorrect.
2fill in blank
medium

Complete the code to filter out odd numbers using filterNot.

Kotlin
val numbers = listOf(1, 2, 3, 4, 5)
val evens = numbers.filterNot { it [1] 2 != 0 }
println(evens)
Drag options to blanks, or click blank then click option'
A-
B*
C+
D%
Attempts:
3 left
💡 Hint
Common Mistakes
Using multiplication or addition operators instead of modulo.
Confusing filter and filterNot logic.
3fill in blank
hard

Fix the error in the code to filter words longer than 3 characters.

Kotlin
val words = listOf("cat", "dog", "elephant", "fox")
val longWords = words.filter { it.length [1] 3 }
println(longWords)
Drag options to blanks, or click blank then click option'
A<=
B>
C==
D<
Attempts:
3 left
💡 Hint
Common Mistakes
Using less than (<) instead of greater than (>).
Using equality (==) which only selects words of length exactly 3.
4fill in blank
hard

Fill both blanks to create a map of word lengths for words shorter than 5 characters.

Kotlin
val words = listOf("apple", "bat", "cat", "dog", "elephant")
val shortWordLengths = words.filter { it.length [1] 5 }.associateWith { it.[2] }
println(shortWordLengths)
Drag options to blanks, or click blank then click option'
A<
Blength
C>
DtoString
Attempts:
3 left
💡 Hint
Common Mistakes
Using greater than (>) instead of less than (<) in filter.
Using toString instead of length for mapping.
5fill in blank
hard

Fill all three blanks to create a map of uppercase words to their lengths for words not starting with 'a'.

Kotlin
val words = listOf("apple", "bat", "cat", "dog", "ant")
val result = words.filterNot { it.startsWith([1]) }.associateWith { it.[2] }.mapKeys { it.key.[3]() }
println(result)
Drag options to blanks, or click blank then click option'
A"a"
Blength
Cuppercase
DtoUpperCase
Attempts:
3 left
💡 Hint
Common Mistakes
Using uppercase instead of toUpperCase() function.
Forgetting quotes around "a" in startsWith.
Using wrong property for length.

Practice

(1/5)
1. What does the filter function do in Kotlin collections?
easy
A. Sorts the collection in ascending order
B. Removes all items from the collection
C. Keeps items where the condition is false
D. Keeps items where the condition is true

Solution

  1. Step 1: Understand the purpose of filter

    The filter function selects elements that satisfy a given condition (true).
  2. Step 2: Compare with other options

    Options B and D describe different operations, and C describes filterNot, not filter.
  3. Final Answer:

    Keeps items where the condition is true -> Option D
  4. Quick Check:

    filter = keep true items [OK]
Hint: Remember: filter keeps true, filterNot keeps false [OK]
Common Mistakes:
  • Confusing filter with filterNot
  • Thinking filter removes all items
  • Mixing filter with sorting functions
2. Which of the following is the correct syntax to filter even numbers from a list numbers in Kotlin?
easy
A. numbers.filter { it / 2 == 0 }
B. numbers.filterNot { it % 2 == 0 }
C. numbers.filter { it % 2 == 0 }
D. numbers.filter { it % 2 != 0 }

Solution

  1. Step 1: Identify the condition for even numbers

    Even numbers satisfy it % 2 == 0.
  2. Step 2: Choose correct filter syntax

    filter keeps items where condition is true, so numbers.filter { it % 2 == 0 } keeps even numbers.
  3. Final Answer:

    numbers.filter { it % 2 == 0 } -> Option C
  4. Quick Check:

    filter with even condition = numbers.filter { it % 2 == 0 } [OK]
Hint: Use filter with condition true to keep desired items [OK]
Common Mistakes:
  • Using filterNot instead of filter
  • Using division instead of modulo
  • Confusing condition signs (== vs !=)
3. What is the output of this Kotlin code?
val nums = listOf(1, 2, 3, 4, 5)
val result = nums.filterNot { it > 3 }
println(result)
medium
A. [1, 2, 3]
B. [4, 5]
C. [1, 2, 3, 4, 5]
D. []

Solution

  1. Step 1: Understand filterNot condition

    filterNot { it > 3 } keeps items where it > 3 is false, so items ≤ 3.
  2. Step 2: Apply condition to list

    Numbers 1, 2, 3 are ≤ 3, so they are kept; 4 and 5 are removed.
  3. Final Answer:

    [1, 2, 3] -> Option A
  4. Quick Check:

    filterNot > 3 = keep ≤ 3 [OK]
Hint: filterNot keeps items where condition is false [OK]
Common Mistakes:
  • Confusing filterNot with filter
  • Including numbers greater than 3
  • Expecting empty list output
4. Find the error in this Kotlin code that tries to filter out odd numbers:
val numbers = listOf(1, 2, 3, 4, 5)
val evens = numbers.filterNot { it % 2 == 0 }
println(evens)
medium
A. The list is empty after filtering
B. It incorrectly keeps odd numbers instead of even
C. filterNot cannot be used with modulo operator
D. Syntax error in lambda expression

Solution

  1. Step 1: Analyze the filterNot condition

    filterNot { it % 2 == 0 } keeps items where it % 2 == 0 is false, so it keeps odd numbers.
  2. Step 2: Check intended output

    The code tries to get even numbers but actually keeps odd numbers, so logic is reversed.
  3. Final Answer:

    It incorrectly keeps odd numbers instead of even -> Option B
  4. Quick Check:

    filterNot with even condition keeps odd [OK]
Hint: filterNot reverses condition; use filter to keep true items [OK]
Common Mistakes:
  • Using filterNot instead of filter for positive condition
  • Assuming filterNot removes items instead of keeping false
  • Misreading modulo condition
5. Given a list val words = listOf("apple", "banana", "", "cherry", ""), which Kotlin expression returns a list of only the non-empty words using filter and filterNot correctly?
hard
A. words.filter { it.isNotEmpty() }
B. words.filterNot { it.isNotEmpty() }
C. words.filter { it.isEmpty() }
D. words.filterNot { it.length > 0 }

Solution

  1. Step 1: Identify condition for non-empty strings

    Non-empty strings satisfy it.isNotEmpty().
  2. Step 2: Choose correct filter usage

    filter keeps items where condition is true, so words.filter { it.isNotEmpty() } returns only non-empty words.
  3. Final Answer:

    words.filter { it.isNotEmpty() } -> Option A
  4. Quick Check:

    filter with isNotEmpty = keep non-empty [OK]
Hint: Use filter with positive condition to keep desired items [OK]
Common Mistakes:
  • Using filterNot with isNotEmpty to keep empty strings
  • Confusing isEmpty and isNotEmpty
  • Expecting filterNot to remove empty strings
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