//JN 2018 import java.util.*; public class PhoneBook { private TreeMap> phoneBook; public PhoneBook() { phoneBook = new TreeMap>(); } public void add(String name, String phoneNumber) { ArrayList input = phoneBook.containsKey(name) ? phoneBook.get(name) : new ArrayList(); input.add(phoneNumber); phoneBook.put(name, input); } public void remove (String phoneNumber) { ArrayList edit = new ArrayList(); Set keys = phoneBook.keySet(); for (String key : keys) { if (phoneBook.get(key).contains(phoneNumber)) { edit = phoneBook.get(key); edit.remove(edit.indexOf(phoneNumber)); phoneBook.put(key, edit); } } } public void removeEntry(String name) { phoneBook.remove(name); } public String lookup(String name) { return phoneBook.containsKey(name) ? format(phoneBook.get(name)): "N/A"; } public String format(ArrayList numbers) { return numbers.toString().replaceAll("[\\[\\]]", ""); } public String reverseLookup(String phoneNumber) { String output = ""; Set keys = phoneBook.keySet(); for (String key : keys) { if (phoneBook.get(key).contains(phoneNumber)) { output = key; } } return output.equals("") ? "N/A" : output; } public String display() { return phoneBook.toString().replaceAll("[{}=,]", "") .replaceAll("\\[", " - ") .replaceAll("\\]", "\n"); } public TreeMap getPhoneBook() { return phoneBook; } }