Нахождение строки, которая является первой в алфавитном порядке в ArrayList of Strings

У меня есть ArrayList заметок в виде строк (например, можно было бы "убрать мусор". У меня есть класс заметок, и один из методов должен пройти по заметкам, хранящимся в ArrayList, и найти одну из них. это идет первым в алфавите. Это мой текущий метод:

public String firstAlphabetically() {
        String min = "";
        for (int i = 0; i < notes.size(); i++) {
            for (int j = i + 1; j < notes.size() + 1; i++) {
                if ((notes.get(i)).compareTo(notes.get(j)) < 0) {
                    min = notes.get(i);
                } else {
                    min = notes.get(j);
                }
            }
        }
        return min;
    }

Однако, когда я запускаю программу, я получаю сообщение об ошибке за пределами этой строки: for (int j = i + 1; j < notes.size() + 1; i++), Я знаю, что такое ошибка за пределами границ, но я не могу понять, какая часть этой строки вызовет сбой программы. Кто-нибудь может сказать мне, что я делаю не так?

2 ответа

Решение

Проблема 1:
Условие завершения цикла должно быть i < notes.size()

Проблема 2:
Слишком много кода. Попробуйте вместо этого 1-вкладыш:

return notes.stream().sorted().findFirst().orElse(null);

Добавлять:

implements Comparable<Note>

к сигнатуре вашего класса, а затем реализуйте метод CompareTo() в вашем классе Note. Тогда вы можете использовать:

Collections.sort(listOfNotes)
Другие вопросы по тегам