Question: I'm really stuck on this assignment in general. I'm mainly confused about the ShippingList Class and the main class and I would like to know
I'm really stuck on this assignment in general. I'm mainly confused about the ShippingList Class and the main class and I would like to know what to do 


ShipmentList - shipmentList : ArrayList> + AB = "Alberta' 21.95 + BC = "British Columbia" 26.95 + MB = "Manitoba", 18.95 + NB = "New Brunswick, 21.95 + NL = "Newfoundland & Labrador" 24 95 + NS = "Nova Scotia" 22.95 + NT = "Northwest Territories" 27.95 NU = "Nunavut 27 95 + ON = "Ontario". 12.49 + PE = "Prince Edward Island" 23.49 + QC = "Quebec", 16.95 + SK = "Saskatchewan" 21.95 + YT = "Yukon" 29.95 - name String - cost double Shipment + destination Destination - shipValue double + Shipment) + Shipmentidest Destination, value: double) + setshipValue(value double) void + getShipValue() double + addShipValue(value double) void + tostringoString Destination name String cost double) + getName() String + getCost) double The shipmentlist member is an ArrayList of Shipment objects. You can instantiate the empty ArrayList in the same statement in which you declare it. The get() method accepts an integer index and returns the shipment object at that index. The add() method accepts a Shipment object to add to the shipmentList. However, a destination should appear in the list only once (if there is inventory being sent to more than one different store in the same province, those are consolidated into a single shipment to that province). Therefore, the method must first check and see if there is already an entry in the shipmentList with the same destination as the Shipment parameter. If there is, then the shipment parameter's value is added to the existing shipment's value for that province. If there isn't then the shipment parameter should be added to the end of the shipmentList. (Example: The add() method receives a Shipment object representing a shipment to Manitoba that has a value of $1200.00. The method sees that there is already a shipment going to Manitoba with a value of $1000.00, so adds the $1200.00 of the new shipment to the existing shipment. Now the Manitoba shipment has a total value of $2200.00. Then the add() method receives a Shipment object representing a shipment to Nunavut that has a value of $550.00. The add() method sees that there is no other shipment going to Nunavut, so it adds the new shipment to the end of the shipmentList.) The findShipment() method receives a specific Destination enum constant and returns the index of the shipment element in the shipmentlist that is going to that destination (remember there will never be more than one match). If there is no element in the shipmentlist matching the destination, then-1 is returned. The length() method returns the size of the shipmentList (the # of elements that contain Shipment objects). The toString() method returns the shipmentList as a formatted String object. The returned String should contain each Shipment object in the list, one per line, with a new-line after the last Shipment. The Main program This program collects data about the shipments going out during the week and displays summary information about those shipments. Your program should perform the following tasks: Create a new, empty ShipmentList. Use a loop to get the shipment data for the ShipmentList. Continue with the following tasks until the user indicates that they're finished entering shipment data: - Prompt the user to enter the destination province by province code and use this to get a Destination enum constant. Prompt the user to enter the value of the shipment. If the user enters an invalid value (use Shipment's mutator method), give them an error message (you can use the one from the mutator method) and prompt them again. Repeat until the shipment value is valid. For now, don't worry about the user entering a non-double value - Add the shipment to the shipmentList. Once all the shipments have been recorded and added, print the list of shipments in the ShipmentList. Print the shipment in the ShipmentList with the highest value (this includes the cost of shipping to the destination province.. for example, a shipment of $1500.00 to the Yukon is going to have a higher value than a shipment of $1500.00 to Ontario). All user interaction and output should be displayed on the console/screen. Currency values should be formatted with a dollar sign $ and 2 decimal places. Sample interaction and output below (you can use these values to test your program)