java - 如何正确填充 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;
}
解决方案
'26' 只是说 arraylist 被优化以处理 26 个元素。它仍然是一个空数组列表,其中包含零个元素。在 for (26) 循环的顶部,尝试添加buckets.add(new ArrayList<>());
.
另外,您没有按照问题的要求做;您将输入循环 26 次,所问的问题希望您只循环一次。(因为这是家庭作业,如果我只是为你钓到这条鱼,对你的教育没有帮助)。
推荐阅读
- r - R用一个值/字符串连接数据框中的列
- angular - 角材料表宽度 100%
- c# - 如何将重点放在流程上?
- ios - swift tableView 为零
- c++ - 带有指向 STL 容器的迭代器的模板类
- javascript - 是否有一种优雅的方式将 npm 运行选项传递给 grunt 选项
- highcharts - Highcharts 奇怪的线条
- c# - Xamarin Android 不加载 AndroidManifest.xml
- jenkins - 唯一的詹金斯作业/管道标识符
- tomcat - Certbot 错误 - 类型:未授权,抛出 404。Tomcat 9 + Ubuntu 18.04