Доброго времени суток! Задачу решил, но вот что код делает, не пойму... объясните пожалуйста!
import java.util.List;

/*
Время для 10 тысяч вызовов get
*/

public class Solution {
    public static void main(String[] args) {
//вывод на экран результатов работы 2 методов fill и getGetTimeInMs еще и создание списков
//что это за страшная строчка getGetTimeInMs(fill(new ArrayList() ?
        System.out.println(getGetTimeInMs(fill(new ArrayList())));
        System.out.println(getGetTimeInMs(fill(new LinkedList())));
    }
//метод fill типа List с переменной list создает 10.000 объектов в каждом списке
    public static List fill(List list) {
        for (int i = 0; i < 10000; i++) {
            list.add(new Object());
        }
        return list;
    }


    public static long getGetTimeInMs(List list) {
        /* тут мы сравниваем время до запуска метода get10000 и после
        Date start = new Date();

        get10000(list);

        Date finish = new Date();
        long ms = finish.getTime() - start.getTime();
        return ms;
        */
    }
// что тут происходит ?
    public static void get10000(List list) {
        if (list.isEmpty()) {
            return;
        }
        int x = list.size() / 2;

        for (int i = 0; i < 10000; i++) {
            list.get(x);
        }
    }
}