我想按字母排序字符串的ArrayList
,每个“存储区”存储以相同字母开头的单词。用于将单词存储在ArrayList中的存储桶
这是我到目前为止。
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;
}
我有水桶被区分,如果我有bucket.clear();
它简单地清除整个列表的问题。我该如何做到这一点,让这个词保持斗劲,我知道ArrayList
存储对一个对象的引用,我不知道如何使它停留在列表中,而不会使其停留在列表中。如果我遗漏了bucket.clear();
,那么我在每个“桶”中都有相同的对象。
编辑
我现在有
public static ArrayList<ArrayList> bucketMaker(ArrayList<String> list) {
ArrayList<ArrayList> output = new ArrayList<ArrayList>(26);
ArrayList<String> bucket = new ArrayList<String>();
for (char letter = 'a'; letter <= 'z'; letter++) {
output.add(new ArrayList<String>());
}
for (String s : list) {
for (char letter = 'a'; letter <= 'z'; letter++) {
if (s.startsWith(String.valueOf(letter))) {
output.get(letter-97).add(s);
}
}
}
return output;
}
其工作,感谢您的帮助!
你需要26个桶,但你有一个。你持续冲洗。 :( – Nishant 2013-03-05 02:20:02