the next step is to define the adt for list object in terms of set of operations on that object we will use the java notation of an interface to formally define the list adt interface list defines the member functions that any list implementation inheriting from it must supportalong with their parameters and return types we increase the flexibility of the list adt by writing it as java generic true to the notion of an adtan interface does not specify how operations are implemented two complete implementations are presented later in this sectionboth of which use the same list adt to define their operationsbut they are considerably different in approaches and in their space/time tradeoffs figure presents our list adt class list is generic of one parameternamed serves as placeholder for whatever element type the user would like to store in list the comments given in figure describe precisely what each member function is intended to do howeversome explanation of the basic design is in order given that we wish to support the concept of sequencewith access to any position in the listthe need for many of the member functions such as insert and movetopos is clear the key design decision embodied in this adt is support for the concept of current position for examplemember movetostart sets the current position to be the first element on the listwhile methods next and prev move the current position to the next and previous elementsrespectively the intention is that any implementation for this adt support the concept of current position the current position is where any action such as insertion or deletion will take place since insertions take place at the current positionand since we want to be able to insert to the front or the back of the list as well as anywhere in betweenthere are actually possible "current positionswhen there are elements in the list it is helpful to modify our list display notation to show the position of the current element will use vertical barsuch as to indicate the list of four elementswith the current position being to the right of the bar at element given this configurationcalling insert with value will change the list to be if you examine figure you should find that the list member functions provided allow you to build list with elements in any desired orderand to access any desired position in the list you might have noticed that the clear method is not necessaryin that it could be implemented by means of the other member functions in the same asymptotic time it is included merely for convenience method getvalue returns reference to the current element it is considered violation of getvalue' preconditions to ask for the value of non-existent element ( the right partition must not be emptyin our concrete list imple