Answer:
Here is the JAVA program:
Items.java
public class Item { // Item class
private String name, ph_num; // class data members name to hold the name and ph_num stores the telephone numbers
public Item(String fullName, String PhoneNo){ //constructor of Item class , so fields full name and ph_num can be initialized when the object is created
name = fullName; // holds the name field
ph_num = PhoneNo;} //holds the telephone number
public String getFullName(){ // accessor method to get access to the name field
return name;} //returns the name from directory
public String getPhoneNo(){ //accessor method to get access to the ph_nujm field
return ph_num; } } //returns the telephone number
Step-by-step explanation:
LookupTable.java
public class LookupTable{ //class name
private ArrayList<Item> data; // dynamic array list named data of Item class. This array list stores the names and telephone numbers from file
public LookupTable(){ //default constructor
data = new ArrayList<Item>();} // creates an array list of Item type which holds the names and phone numbers
public void read(Scanner in){ // Scanner class object is created and this class is used to read input and the method reads the names and phone numbers
while(in.hasNext()){ // the loop moves through each line of the file. scanner class method hasNext checks for the tokens in the input
String name = in.nextLine(); // scans for the name in the input
String ph_num = in.nextLine(); //scans for the phone numbers in the input
data.add(new Item(name, ph_num));}} // adds the names and phone number in to the Array list
public String lookup(String k){ //method looks up for an item in the table. param k is the key to find . returns the value with the given key, or null if no such item was found
String result = null; //result initialized to to null
for(Item item: data){ //creates Item object and traverses the array list for each item i.e. name or phone numbers
if(k.equals(item.getFullName())){ //access the getFullName method through object item and checks if that name matches the key to find.
result = item.getPhoneNo();}} //gets the corresponding phone number and assigns it to result variable
return result;} //returns the result containing the phone number
public String reverseLookup(String v){ //Looks up an item in the table. param v is the value to find . returns the key with the given value, or null if no such item was found. This method performs the lookup through phone number
String result = null; //result is set to null to start
for(Item item: data){ //Traversing list through the for each item in data
if(v.equals(item.getPhoneNo())){ //if the value of v is equal to the phone number accessed by using accessor method and object item
result = item.getFullName();}} //accesses the corresponding name of that phone number and assigns it to the result
return result;}} //returns the result
The data from directory file which contains the number and names. The LookupTable class has a method lookup which handles the lookups by names and the method reverseLookup that handles the lookups by phone number.