我想按字母排序字符串的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