如何正确填充 ArrayList<String> 类型的 ArrayList?
How to properly populate an ArrayList of type ArrayList<String>?
我是一名 APCSA 学生,我正在尝试回答教科书中的一个问题。基本上,给定一个不同单词的 ArrayList,我需要创建和 return 一个 ArrayList 类型的 ArrayList,其中包含 26 "buckets",每个包含以 "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;
}
那里的“26”只是说数组列表经过优化可以处理 26 个元素。它仍然是一个空数组列表,其中包含零个元素。在 for (26) 循环的顶部,尝试添加 buckets.add(new ArrayList<>());
.
此外,你没有按照问题的要求去做;你循环输入 26 次,所问的问题希望你只循环一次。 (因为这是家庭作业,如果我只是为你钓到这条鱼,对你的教育没有帮助)。
我是一名 APCSA 学生,我正在尝试回答教科书中的一个问题。基本上,给定一个不同单词的 ArrayList,我需要创建和 return 一个 ArrayList 类型的 ArrayList,其中包含 26 "buckets",每个包含以 "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;
}
那里的“26”只是说数组列表经过优化可以处理 26 个元素。它仍然是一个空数组列表,其中包含零个元素。在 for (26) 循环的顶部,尝试添加 buckets.add(new ArrayList<>());
.
此外,你没有按照问题的要求去做;你循环输入 26 次,所问的问题希望你只循环一次。 (因为这是家庭作业,如果我只是为你钓到这条鱼,对你的教育没有帮助)。