Creating an Address Book Application with Kotlin MutableMap

Introduction

Welcome! Today, we will explore creating a simple address book application using Kotlin's collections, specifically mutable maps. This task will help you understand how to manipulate maps in Kotlin, focusing on adding, retrieving, and deleting entries. By the end of this lesson, you'll have a solid grasp of these fundamental operations.

Introducing Methods to Implement

In this task, we will implement three methods to manage our address book:

  • addContact(name: String, phoneNumber: String): Boolean: Adds a new contact. Returns false if the contact already exists, otherwise adds the contact and returns true. In this task, let's assume phone numbers do not change, so it's not allowed to overwrite the existing contact's number.
  • getContact(name: String): String?: Retrieves the phone number for a given name. Returns null if the contact does not exist.
  • deleteContact(name: String): Boolean: Deletes a contact with the given name. Returns true if the contact exists and is deleted; false otherwise.

Let's break down each method in detail in the next sections.

Step 1: Implementing `addContact`

This method adds a new contact to the address book with the given name and phoneNumber. If the contact already exists, it returns false. Otherwise, it adds the contact and returns true.

Question: Why do you think we need to check if the contact already exists?

Answer: To avoid duplicating existing entries. If a contact with the same name already exists, we shouldn't allow overwriting its phone number in this method, as it's only for creation.

Here is the method implementation:

class AddressBook {
    val contacts = mutableMapOf<String, String>()
    
    fun addContact(name: String, phoneNumber: String): Boolean {
        if (contacts.containsKey(name)) {
            return false
        }
        contacts[name] = phoneNumber
        return true
    }
}

// Example usage:
fun main() {
    val addressBook = AddressBook()
    println(addressBook.addContact("Alice", "123-456-7890"))  // true
    println(addressBook.addContact("Alice", "098-765-4321"))  // false
    println(addressBook.contacts)  // {Alice=123-456-7890}
}

In this method:

  • We verify if the contact already exists using containsKey(name).
  • If it exists, we return false.
  • If it doesn't exist, we add it to our map and return true.
Sign up

Join the 1M+ learners on CodeSignal

Be a part of our community of 1M+ users who develop and demonstrate their skills on CodeSignal