Managing Records with Nested Maps and Lists in Java

Welcome! Today, we are going to explore an engaging task that involves managing employee records within a company. Specifically, we will work with nested maps and lists to add projects and tasks for employees and retrieve those tasks as needed. This exercise will help you understand how to manipulate hierarchical data structures efficiently using Java.

Introducing Methods to Implement

Let's start by discussing the methods we will implement in our EmployeeRecords class.

  • boolean addProject(String employeeId, String projectName) - This method adds a new project to an employee's list of projects. If the project already exists for that employee, the method returns false. Otherwise, it adds the project and returns true.
  • boolean addTask(String employeeId, String projectName, String task) - This method adds a new task to a specified project for an employee. If the project does not exist for that employee, the method returns false. If the task is added successfully, it returns true.
  • List<String> getTasks(String employeeId, String projectName) - This method retrieves all tasks for a specified project of an employee. If the project does not exist for that employee, the method returns null. Otherwise, it returns the list of tasks.
  • List<String> traverse(String employeeId, String projectName) - This private method helps to locate the nested structure for a given employee and project. If the path is valid and exists, it returns the target list. If it is invalid or does not exist, it returns null.
Step 1: Basic Class Structure

Now, let's build our EmployeeRecords class step by step, ensuring we understand each component clearly.

We'll start with the basic structure of the class and initialize our data storage.

Java
import java.util.HashMap;
import java.util.List;
import java.util.Map;

class EmployeeRecords {
    private Map<String, Map<String, List<String>>> records;

    public EmployeeRecords() {
        records = new HashMap<>();
    }
}

public class Solution {
    public static void main(String[] args) {
        EmployeeRecords records = new EmployeeRecords();
        System.out.println(records);
    }
}

In this initial setup, we define the EmployeeRecords class and create an instance variable records that is a nested map. This structure will be used to store employee records, where each key is an employee ID, and each value is another map holding projects and their respective tasks.

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