Description
, you are given three files Assignment10.java, LinkedList.java, and ListIterator.java. You will need to add additional methods in the LinkedList class in the LinkedList.java file. The LinkedList will be tested using strings only.
Specifically, the following methods must be implemented in the LinkedList class:
(You should utilize listIterator() method already defined in the LinkedList class to obtain its LinkedListIterator object, and use the methods in the LinkedListIterator class to traverse from the first element to the last element of the linked list to define the following methods.)
1. public String toString()
The toString method should concatenate strings in the linked list, and return a string of the following format:
{ Apple Banana Melon Orange }
Thus it starts with “{” and ends with “}”, and there is a space between strings and “{” or “}”. If the list is empty, it returns “{ }” with a space in between. Note that all elements in the linked list will be added in alphabetical order.
2. public int size()
The size method returns the number of strings that the linked list contains at the time when this method is called.
3. public void addElement(Object element)
The addElement adds the parameter element into the linked list. The linked list should contain all elements (strings) in alphabetical order. Therefore, in this addElement method, a correct location to insert the parameter element needs to be searched and the element needs to be inserted in that location.
4. public void removeElementsAtEvenIndices( )
The removeElementsAtEvenIndices should remove objects at even indices within the linked list. For instance, if the linked list contains { Apple Banana Melon Orange }, then after calling this method, the linked list should contain { Banana Orange } since Applet at the index 0 and Melon at the index 2 need to be removed. Each element within the linked list can be labeled starting at index 0, and based on this assumption, elements should be removed. If the linked list does not contain any element, then the method should not change its content.
5. public int howManyAppearBefore(Object element)
The howManyAppearBefore method should search the parameter object (a string in this case) in the linked list, then it should count how many elements appear before the first occurrence of the parameter object/element and return it. If the linked list does not contain the parameter object/element in it, then this method should return -1.
6. public int indexOfLast(Object element)
The indexOfLast method should look for the last occurrence of the parameter object (a string in this case) in the linked list, and return the index of its location. If the linked list does not contain the parameter object/elements in it, then this method should return -1.
7. public void duplicateEach( )
The duplicateEach method should duplicate each element in the linked list. For instance, if the linked list contains { Apple Banana Melon Orange }, and this method is called, then the linked list will contain { Apple Apple Banana Banana Melon Melon Orange Orange } If the linked list is empty, then it should not change the content of the linked list.
8. public Object removeElementAt(int)
The removeElementAt method should look for an object at the parameter index, and it should remove and return the object at the index location. If the parameter index is larger or smaller than the existing indices, it should throw an object of the IndexOutOfBoundsException class.
Test your LinkedList class with the given Assignment10.java file. It is recommended to test boundary cases such as the cases where the linked list is empty, when it contains only one element, when adding/removing at the beginning or at the end of the linked list.








