Java. Почему цикл не воспринимает размер списка?
Потому что метод size возвращает количество элементов в списке, а передаваемое в конструктор число обозначает начальную ёмкость списка. Образно говоря, если вы взяли трёхлитровую банку - это ещё не значит, что в ней есть три литра воды.
Koshkasobaka для того чтобы инициализировать список фиксированной длины часто использутся 
что то вроде
List<String> names = new ArrayList<>(
				Arrays.asList(new String[] { "ильф", "петров" }));

можно и подруному конечно но так помоему довольно удобено