In: Computer Science
Convert this java code from hashmap into arraylist. import java.io.*; import java.util.*; public class Solution { public static void main(String[] args) throws IOException { Scanner sc = new Scanner(System.in); HashMap labs = new HashMap(); while (true) { System.out.println("Choose operation : "); System.out.println("1. Create a Lab"); System.out.println("2. Modify a Lab"); System.out.println("3. Delete a Lab"); System.out.println("4. Assign a pc to a Lab"); System.out.println("5. Remove a pc from a Lab"); System.out.println("6. Quit"); int choice = sc.nextInt(); String name=sc.nextLine(); switch (choice) { case 1: System.out.println("Enter Lab name (i.e. LAB A or LAB B) : "); name = sc.nextLine(); labs.put(name, new Lab(name)); break; case 2: System.out.println("Enter name of lab to modify : "); name = sc.nextLine(); if (labs.containsKey(name)) { System.out.println("Enter new name to modify : "); String name2 = sc.nextLine(); Lab lab = labs.get(name); labs.remove(name); labs.put(name2, lab); } else { System.out.println("Invalid name"); } break; case 3: System.out.println("Enter name of lab to delete : "); name = sc.nextLine(); if (labs.containsKey(name)) { Lab lab = labs.get(name); System.out.println("Total pc in this lab are : " + lab.pc_count); labs.remove(name); } else { System.out.println("Invalid name"); } break; case 4: System.out.println("Enter name of lab to assign a pc : "); name = sc.nextLine(); if (labs.containsKey(name)) { if (labs.get(name).pc_count >= 50) { System.out.println("cannot assign more pc"); } else { labs.get(name).pc_count++; } } else { System.out.println("Invalid name"); } break; case 5: System.out.println("Enter name of lab to assign a pc : "); name = sc.nextLine(); if (labs.containsKey(name)) { if (labs.get(name).pc_count <= 0) { System.out.println("cannot remove pc"); } else { labs.get(name).pc_count--; } } else { System.out.println("Invalid name"); } break; case 6: return; default: System.out.println("Invalid choice choose again."); break; } } } static class Lab { String name; int pc_count; Lab(String name) { this.name = name; pc_count = 0; } } }
THE CODE IS:
import java.io.IOException;
import java.util.ArrayList;
import java.util.Scanner;
public class Solution {
// In stead of hashmap we will use two
arraylist.
// One arraylist of type String to act as the
Key arraylist
// Second arraylist to store the Lab to act as
the Value arraylist
static ArrayList<String> key = new
ArrayList<>();
static ArrayList<Lab> value = new
ArrayList<>();
public static void put(String name, Lab lab)
{
// if key is already
there in hashmap then replace the previous lab value
if (key.contains(name))
{
int index = key.indexOf(name);
value.set(index, lab);
}// else if key is not
present then add the key-value pair to the hashmap
else {
key.add(name);
value.add(lab);
}
}
public static void main(String[] args) throws IOException {
Scanner sc = new Scanner(System.in);
while (true) {
System.out.println("Choose operation : ");
System.out.println("1. Create a Lab");
System.out.println("2. Modify a Lab");
System.out.println("3. Delete a Lab");
System.out.println("4. Assign a pc to a Lab");
System.out.println("5. Remove a pc from a Lab");
System.out.println("6. Quit");
int choice = sc.nextInt();
String name = sc.nextLine();
switch (choice) {
case 1:
System.out.println("Enter Lab name (i.e. LAB A or LAB B) :
");
name = sc.nextLine();
put(name, new Lab(name));
break;
case 2:
System.out.println("Enter name of lab to modify : ");
name = sc.nextLine();
if (key.contains(name)) {
System.out.println("Enter new name to modify : ");
String name2 = sc.nextLine();
// getting index of current position of key and updating the
name
int index = key.indexOf(name);
key.set(index, name2);
} else {
System.out.println("Invalid name");
}
break;
case 3:
System.out.println("Enter name of lab to delete : ");
name = sc.nextLine();
if (key.contains(name)) {
// getting lab
int index = key.indexOf(name);
Lab lab = value.get(index);
System.out.println("Total pc in this lab are : " +
lab.pc_count);
// removing the lab from the hashmap
key.remove(index);
value.remove(index);
} else {
System.out.println("Invalid name");
}
break;
case 4:
System.out.println("Enter name of lab to assign a pc : ");
name = sc.nextLine();
if (key.contains(name)) {
// checking if number of pc in the lab exceeds 50
if (value.get(key.indexOf(name)).pc_count >= 50) {
System.out.println("cannot assign more pc");
}// if it doesn't then increment the value of pc in the lab
else {
value.get(key.indexOf(name)).pc_count++;
}
} else {
System.out.println("Invalid name");
}
break;
case 5:
System.out.println("Enter name of lab to remove a pc : ");
name = sc.nextLine();
if (key.contains(name)) {
if (value.get(key.indexOf(name)).pc_count <= 0) {
System.out.println("cannot remove pc");
} else {
value.get(key.indexOf(name)).pc_count--;
}
} else {
System.out.println("Invalid name");
}
break;
case 6:
return;
default:
System.out.println("Invalid choice choose again.");
break;
}
}
}
static class Lab {
String name;
int pc_count;
Lab(String name)
{
this.name = name;
pc_count = 0;
}
}
}