Bird
Raised Fist0
Kotlinprogramming~5 mins

Null safety in collections in Kotlin - Cheat Sheet & Quick Revision

Choose your learning style10 modes available
Recall & Review
beginner
What does null safety mean in Kotlin collections?
Null safety means Kotlin collections can be designed to either allow or disallow null values, helping prevent errors caused by unexpected nulls.
Click to reveal answer
beginner
How do you declare a list that cannot contain null values in Kotlin?
Use List<Type> without a question mark. For example, val list: List<String> means no nulls allowed in the list.
Click to reveal answer
beginner
How do you declare a list that can contain null values in Kotlin?
Use a nullable type inside the list, like List<String?>. This means the list can hold strings or nulls.
Click to reveal answer
intermediate
What happens if you try to add a null to a non-nullable collection in Kotlin?
The code will not compile because Kotlin enforces null safety at compile time, preventing nulls in non-nullable collections.
Click to reveal answer
intermediate
Explain the difference between MutableList<String> and MutableList<String?>.
MutableList<String> can only hold non-null strings, while MutableList<String?> can hold strings and null values.
Click to reveal answer
Which Kotlin collection declaration allows null values inside the collection?
AMutableList<String>
BList<String>
CList<String?>
DSet<String>
What will happen if you try to add null to a MutableList<String>?
ACompile-time error
BNull is added successfully
CRuntime exception
DThe list ignores the null
How do you declare a map in Kotlin that can have null values but non-null keys?
AMap<String, String>
BMap<String?, String>
CMap<String?, String?>
DMap<String, String?>
Which of these is a nullable collection type in Kotlin?
AList<String?>
BList<String>
CMutableList<Int>
DSet<Double>
Why is null safety important in Kotlin collections?
ATo allow any type of data
BTo avoid null pointer exceptions
CTo make collections slower
DTo allow duplicates
Describe how Kotlin handles null safety in collections and why it is useful.
Think about how Kotlin uses question marks to allow or disallow nulls.
You got /3 concepts.
    Explain the difference between List<String> and List<String?> in Kotlin.
    Focus on the question mark after the type inside the list.
    You got /3 concepts.

      Practice

      (1/5)
      1. What does Kotlin's null safety feature ensure when working with collections like List or Set?
      easy
      A. It prevents storing null values in collections declared without nullable types.
      B. It automatically converts all null values to empty strings in collections.
      C. It allows null values in any collection without restrictions.
      D. It disables the use of collections if they contain null values.

      Solution

      1. Step 1: Understand Kotlin's null safety in collections

        Kotlin distinguishes between nullable and non-nullable types. Collections declared with non-nullable types cannot hold null values.
      2. Step 2: Apply this to collection elements

        If a collection is declared as List<String>, it cannot contain null. To allow null, it must be declared as List<String?>.
      3. Final Answer:

        It prevents storing null values in collections declared without nullable types. -> Option A
      4. Quick Check:

        Null safety = no null in non-nullable collections [OK]
      Hint: Non-nullable collections disallow null elements [OK]
      Common Mistakes:
      • Assuming all collections allow null by default
      • Confusing null safety with automatic null replacement
      • Thinking null safety disables collections with nulls
      2. Which of the following is the correct way to declare a list that can hold nullable integers in Kotlin?
      easy
      A. val numbers: List<Int> = listOf(1, 2, null)
      B. val numbers: List<Int> = listOf(null, null, null)
      C. val numbers: List = listOf(1, 2, 3)
      D. val numbers: List = listOf(1, 2, null)

      Solution

      1. Step 1: Identify nullable type declaration

        To allow null in a list, the element type must be nullable, written as Int?.
      2. Step 2: Check list initialization

        listOf(1, 2, null) is valid only if the list type is List<Int?>. val numbers: List = listOf(1, 2, null) matches this.
      3. Final Answer:

        val numbers: List<Int?> = listOf(1, 2, null) -> Option D
      4. Quick Check:

        Nullable type uses Int? for null elements [OK]
      Hint: Use Type? to allow nulls in collections [OK]
      Common Mistakes:
      • Declaring list as List<Int> but adding nulls
      • Using List<Int> with null elements causes error
      • Confusing nullable element type with nullable list
      3. What will be the output of the following Kotlin code?
      val list: List = listOf("apple", null, "banana")
      val filtered = list.filterNotNull()
      println(filtered)
      medium
      A. ["apple", null, "banana"]
      B. [null]
      C. ["apple", "banana"]
      D. Compilation error

      Solution

      1. Step 1: Understand filterNotNull() behavior

        This function removes all null elements from a collection, returning a list of non-null elements.
      2. Step 2: Apply filterNotNull() on the list

        Original list has "apple", null, "banana". After filtering, only "apple" and "banana" remain.
      3. Final Answer:

        ["apple", "banana"] -> Option C
      4. Quick Check:

        filterNotNull() removes nulls [OK]
      Hint: filterNotNull() removes all nulls from collections [OK]
      Common Mistakes:
      • Expecting nulls to remain after filterNotNull()
      • Thinking filterNotNull() causes compile error
      • Confusing filterNotNull() with filter()
      4. Identify the error in this Kotlin code snippet:
      val list: List<Int> = listOf(1, 2, null, 4)
      medium
      A. The list declaration syntax is incorrect.
      B. The list cannot contain null because Int is non-nullable.
      C. The listOf function cannot be used with integers.
      D. There is no error; the code compiles fine.

      Solution

      1. Step 1: Check element type and values

        The list is declared as List<Int>, which means elements cannot be null.
      2. Step 2: Identify the presence of null

        The list contains a null value, which is not allowed for non-nullable types, causing a compilation error.
      3. Final Answer:

        The list cannot contain null because Int is non-nullable. -> Option B
      4. Quick Check:

        Non-nullable list disallows null elements [OK]
      Hint: Non-nullable types disallow null values in collections [OK]
      Common Mistakes:
      • Assuming null is allowed in List<Int>
      • Thinking listOf syntax is wrong
      • Ignoring Kotlin's null safety rules
      5. Given a list of nullable strings val items: List = listOf("a", null, "b", null, "c"), how can you create a map where keys are the strings and values are their lengths, excluding null values safely?
      hard
      A. items.filterNotNull().associateWith { it.length }
      B. items.associateWith { it!!.length }
      C. items.associate { it to it.length }
      D. items.map { it.length }.toMap()

      Solution

      1. Step 1: Remove null values safely

        Use filterNotNull() to exclude null elements before mapping.
      2. Step 2: Create map with strings as keys and lengths as values

        Use associateWith { it.length } on the filtered list to map each string to its length.
      3. Final Answer:

        items.filterNotNull().associateWith { it.length } -> Option A
      4. Quick Check:

        Filter nulls first, then associate [OK]
      Hint: Filter nulls before mapping to avoid errors [OK]
      Common Mistakes:
      • Using !! operator risking NullPointerException
      • Trying to associate null keys or values
      • Mapping lengths without filtering nulls first
      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