@Test(expected = IndexOutOfBoundsException.class) public void shouldNotAcceptPositionsGreaterThanListSize2() { findElement.find2(new ListNode<Integer>(3), 2); }
public ListNode find2(ListNode listNode, int k) { validateInput(listNode, k); int size = calculateListSize(listNode); if (k > (size - 1)) { throw new IndexOutOfBoundsException(); } ListNode result = listNode; int n = size - 1 - k; while (n > 0) { result = result.getNext(); n--; } return result; }
FindKthElement { public ListNode find2(ListNode listNode, int k) { validateInput(listNode, k); int size = calculateListSize(listNode); if (k > (size - 1)) { throw new IndexOutOfBoundsException(); } ListNode result = listNode; int n = size - 1 - k; while (n > 0) { result = result.getNext(); n--; } return result; } }
FindKthElement { public ListNode find2(ListNode listNode, int k) { validateInput(listNode, k); int size = calculateListSize(listNode); if (k > (size - 1)) { throw new IndexOutOfBoundsException(); } ListNode result = listNode; int n = size - 1 - k; while (n > 0) { result = result.getNext(); n--; } return result; } FindKthElement(); }
FindKthElement { public ListNode find2(ListNode listNode, int k) { validateInput(listNode, k); int size = calculateListSize(listNode); if (k > (size - 1)) { throw new IndexOutOfBoundsException(); } ListNode result = listNode; int n = size - 1 - k; while (n > 0) { result = result.getNext(); n--; } return result; } FindKthElement(); ListNode find(ListNode listNode, int k); ListNode find2(ListNode listNode, int k); ListNode find3(ListNode listNode, int k); }
FindKthElement { public ListNode find2(ListNode listNode, int k) { validateInput(listNode, k); int size = calculateListSize(listNode); if (k > (size - 1)) { throw new IndexOutOfBoundsException(); } ListNode result = listNode; int n = size - 1 - k; while (n > 0) { result = result.getNext(); n--; } return result; } FindKthElement(); ListNode find(ListNode listNode, int k); ListNode find2(ListNode listNode, int k); ListNode find3(ListNode listNode, int k);  }