Java 在ArrayList中存储单词的bucket
我想按名字对字符串的Java 在ArrayList中存储单词的bucket,java,arraylist,Java,Arraylist,我想按名字对字符串的ArrayList排序,每个“bucket”存储以相同字母开头的单词 这就是我目前所拥有的 public static ArrayList<ArrayList> bucketMaker(ArrayList<String> list) { ArrayList<ArrayList> output = new ArrayList<ArrayList>(26); ArrayList<String> bucke
ArrayList
排序,每个“bucket”存储以相同字母开头的单词
这就是我目前所拥有的
public static ArrayList<ArrayList> bucketMaker(ArrayList<String> list) {
ArrayList<ArrayList> output = new ArrayList<ArrayList>(26);
ArrayList<String> bucket = new ArrayList<String>();
for (String s : list) {
for (char letter = 'a'; letter <= 'z'; letter++) {
if (s.startsWith(String.valueOf(letter))) {
bucket.add(s);
output.add(bucket);
bucket.clear();
}
}
}
return output;
}
这很有效,谢谢你的帮助 我想你想要的是
ArrayList<ArrayList> output = new ArrayList<ArrayList<String>>();
//Add 26 buckets
for (char letter = 'a'; letter <= 'z'; letter++) {
output.add(new ArrayList<String>());
}
//add each string to the correct bucket
for (String s : list) {
for (char letter = 'a'; letter <= 'z'; letter++) {
if (s.startsWith(String.valueOf(letter))) {
output.get(letter).add(s);
// Get the bucket add the string
}
}
}
ArrayList输出=新建ArrayList();
//添加26个桶
对于(char-letter='a';letter您需要26个桶,但您有一个。您会不断刷新它:(@MrGreenAcid请注意,此解决方案创建了26个ArrayList,这似乎是您想要避免的。KarthikT智能地将所有这些ArrayList保存在另一个ArrayList中。这样,只有一个变量(而不是26)和一个for循环来创建列表。
ArrayList<ArrayList> output = new ArrayList<ArrayList<String>>();
//Add 26 buckets
for (char letter = 'a'; letter <= 'z'; letter++) {
output.add(new ArrayList<String>());
}
//add each string to the correct bucket
for (String s : list) {
for (char letter = 'a'; letter <= 'z'; letter++) {
if (s.startsWith(String.valueOf(letter))) {
output.get(letter).add(s);
// Get the bucket add the string
}
}
}