Return a Position!

  • Explain how Position is different from the Node (inner) class.

Here is the implementation of addFirst from an earlier exercise:

public void addFirst(T data) { Node<T> node = new Node<>(data); node.next = head; head.prev = node; head = node; }

Exercise Update addFirst to return the newly added node (position) which contains the given data value.

public Position<T> addFirst(T data) { // TODO Implement Me! return null; }
Solution
public Position<T> addFirst(T data) { Node<T> node = new Node<>(data); node.next = head; head.prev = node; head = node; return node; }

Notice we can directly return a value of type Node where a Position is expected. This works because of "type substitution."