Я студент APCSA и пытаюсь ответить на вопрос в учебнике. По сути, учитывая ArrayList из разных слов, мне нужно создать и вернуть ArrayList типа ArrayList с 26 «корзинами», каждое из которых содержит все слова, которые начинаются с «a», затем «b» и т. Д. До начала ArrayList полностью отсортирован по первой букве слова. Метод может только один раз проанализировать исходный ArrayList и не может его изменить. Теперь, когда мой код не работает, я получаю ошибку выхода за границы. Если кто-то может указать мне правильное направление, это было бы здорово, спасибо. Это то, что я имею в настоящее время, и я понятия не имею, если это даже близко к праву:
public static ArrayList<ArrayList<String>> sortWords(ArrayList<String> words)
{
ArrayList<ArrayList<String>> buckets = new ArrayList<ArrayList<String>>(26);
String letters = "abcdefghijklmnopqrstuvwxyz";
for(int i = 0; i < 26; i++)
{
//keeps track of current letter in letters
int let = 0;
for(int word = 0; word < words.size(); word++)
{
//if first letter of current word equals letter for current bucket
if(letters.substring(let,let+1).compareToIgnoreCase(words.get(word).substring(0, 1)) == 0)
buckets.get(i).add(words.get(word));
}
let++;
}
return buckets;
}