首页 > 解决方案 > 如何正确填充 ArrayList 类型的 ArrayList?

问题描述

我是一名 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;
}

标签: javaarraylistindexoutofboundsexception

解决方案


'26' 只是说 arraylist 被优化以处理 26 个元素。它仍然是一个空数组列表,其中包含零个元素。在 for (26) 循环的顶部,尝试添加buckets.add(new ArrayList<>());.

另外,您没有按照问题的要求做;您将输入循环 26 次,所问的问题希望您只循环一次。(因为这是家庭作业,如果我只是为你钓到这条鱼,对你的教育没有帮助)。


推荐阅读