Answer:
See explaination 
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.
 atparam 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.
 atparam k the key to find
 atreturn 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.
 atparam v the value to find
 atreturn 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
Note: Replace all the "at" with at symbol