Ниже мой код. Не скрою, что я подсмотрел решение, но не могу разобраться по какому принципу работает. 1. В строке 13 используется strings.size() - 1. Почему - 1 ? 2. В строке 14 strings.get(i + 1). Почему + 1 ? 3. тоже самое вывод на экран ? 4. Почему то без brake в строке 16 валидация не проходила. Интересно какую он функцию выполняет для валидации ? Объясните/распишите пожалуйста принцип работы у кого будет время. Хочу понять этот материал. А еще лучше если кто-то сможет оставить дельные статьи по этому. Заранее Спасибо!
public class Solution {
    public static void main(String[] args) throws IOException {
        //напишите тут ваш код
        BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
        ArrayList<String> aList = new ArrayList<>();
        for (int i = 0; i < 10; i++) {
            aList.add(reader.readLine());
        }
        checkWhereSortingBrakes(aList);
    }

    public static void checkWhereSortingBrakes (ArrayList<String> strings) {
        for (int i = 0; i < strings.size() - 1; i++) {
            if ((strings.get(i).length()) > (strings.get(i + 1).length())) {
                System.out.println(i + 1);
                break;
            }
        }
    }
}