I need help understanding how this linked list set method works in java, * Set value stored at location i to object o, returning old value. * * @pre 0 <= i < size() * @post sets ith entry of list to value o, returns old value * @param i location of entry to be changed. * @param o new value * @return former value of ith entry of list. */ public E set(int i, E o) { if (i >= size()) return null; Node finger = head; // search for ith element or end of list while (i > 0) { finger = finger.next(); i--; } // get old value, update new value E result = finger.value(); finger.setValue(o); return result; Solution Hi friend, Please go through comment, you can uderstand logic of set method. public E set(int i, E o) { // if given position number (i) is greater than current size of list, // then you can not set, because this is not valid position, so return null if (i >= size()) return null; Node finger = head; // initializing finger with head node of list // search for ith element or end of list while (i > 0) // traverse until we not hit ith node in list { finger = finger.next(); i--; } // now after above while loop, finger points ith node in list // get old value, update new value E result = finger.value(); // getting old value of ith node finger.setValue(o); // setting new value in ith node return result; }.