import java.util.LinkedList;
import java.util.List;
import java.util.NoSuchElementException;
 * (*) Find the last element of a list.
 * <p>
 * Check P01Test class for test cases related to this problem.
public class P01 {
    You could solve this using many different approaches.
    If you work with List interface then you can find the last element using List size as shown below.
    public static <T> T last(List<T> elements) {
        int numberOfElements = elements.size();
        return elements.get(numberOfElements - 1);
    Another way to solve this is by using LinkedList instead of a List.
    LinkedList provides a builtin getLast method.
    public static <T> T last(LinkedList<T> elements) {
        return elements.getLast();
    A functional approach could be to use recursion.  We call the function recusively with a sub list which ignores the 0th element.
    When we reach the end i.e. size of the list is 1 then we return that element.
    public static <T> T lastRecursive(List<T> elements) {
        if (elements == null || elements.isEmpty()) {
            throw new NoSuchElementException();
        if (elements.size() == 1) {
            return elements.get(0);
        return lastRecursive(elements.subList(1, elements.size()));