文字列を名前で並べ替えたいのですが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
ストアがオブジェクトを参照していることを理解していますが、 26 を作成せずにそれをリストに残す方法がわかりません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;
}
助けてくれてありがとう!