In Java
Implement a List application that allows a user to manage two types of list implementations (singly linked & circular).
When the user enters the application:
1. The user will be prompted to select:
a. Singly Linked List
b. Circular List
2. For each (a) and (b) the user will be provided the ability to:
1. Select the size of the list.
2. Remove ANY item from the list.
3. Add new items to the list – if the space is available.
3. The application must keep track of and display an up-to-date list of all items in the list along with their current positions.
4. The application must notify the user if the capacity of the list has been reached.
5. The application must provide a graceful way to exit.
6. The application must contain proper error handling throughout.