Answer:
Kindly note that, you're to replace "at" with shift 2 as the brainly text editor can't take the symbol
Explanation:
PhoneLookup.java
import java.io.FileReader;
import java.io.IOException;
import java.util.Scanner;
public class PhoneLookup
{
   public static void main(String[] args) throws IOException
   {
      Scanner in = new Scanner(System.in);
      System.out.println("Enter the name of the phonebook file: ");
      String fileName = in.nextLine();
      LookupTable table = new LookupTable();
      FileReader reader = new FileReader(fileName);
      table.read(new Scanner(reader));
    
      boolean more = true;
      while (more)
      {
         System.out.println("Lookup N)ame, P)hone number, Q)uit?");
         String cmd = in.nextLine();
         
         if (cmd.equalsIgnoreCase("Q"))
            more = false;
         else if (cmd.equalsIgnoreCase("N"))
         {
            System.out.println("Enter name:");
            String n = in.nextLine();
            System.out.println("Phone number: " + table.lookup(n));
         }
         else if (cmd.equalsIgnoreCase("P"))
         {
            System.out.println("Enter phone number:");
            String n = in.nextLine();
            System.out.println("Name: " + table.reverseLookup(n));
         }
      }
   }
}
LookupTable.java
import java.util.ArrayList;
import java.util.Collections;
import java.util.Scanner;
/**
   A table for lookups and reverse lookups
*/
public class LookupTable
{
   private ArrayList<Item> people;
   /**
      Constructs a LookupTable object.
   */
   public LookupTable()
   {
       people = new ArrayList<Item>();
   }
   /**
      Reads key/value pairs.
      "at"param in the scanner for reading the input
   */
   public void read(Scanner in)
   {
      while(in.hasNext()){
          String name = in.nextLine();
          String number = in.nextLine();
          people.add(new Item(name, number));
      }
   }
   /**
      Looks up an item in the table.
      "at"param k the key to find
      "at"return the value with the given key, or null if no
      such item was found.
   */
   public String lookup(String k)
   {
      String output = null;
      for(Item item: people){
          if(k.equals(item.getName())){
              output = item.getNumber();
          }
      }
      return output;
   }
   /**
      Looks up an item in the table.
      "at"param v the value to find
      "at"return the key with the given value, or null if no
      such item was found.
   */
   public String reverseLookup(String v)
   {
       String output = null;
          for(Item item: people){
              if(v.equals(item.getNumber())){
                  output = item.getName();
              }
          }
          return output;
   }
}
Item.java
public class Item {
   private String name, number;
  
   public Item(String aName, String aNumber){
       name = aName;
       number = aNumber;
   }
  
   public String getName(){
       return name;
   }
  
   public String getNumber(){
       return number;
   }
}
input.txt
Abbott, Amy
408-924-1669
Abeyta, Ric
408-924-2185
Abrams, Arthur
408-924-6120
Abriam-Yago, Kathy
408-924-3159
Accardo, Dan
408-924-2236
Acevedo, Elvira
408-924-5200
Acevedo, Gloria
408-924-6556
Achtenhagen, Stephen
408-924-3522
Kindly check the attached output image below.