List<String> alphabet; // (contains 26 unique characters as elements, for example
// qwertyuiosapdfghjklzcxvbnm)
List<String> wordsToArrange; // contains words as elements, for example:
- apple
- stream
- posthouse
- sea
- seed
私は私が作ったアルファベットに応じた単語を配置する必要があります。好きなことをマップする
私は前のループのために巨大で、多くのやっていたが、I got an idea from an answer to a previous question:
alphabet(0) --> "a";
alphabet(1) --> "b";
.................
alphabet(25) --> "z";
だから、言葉は変化するであろう、リンゴはリンゴになる---> kjjsc
その後、私はcollection.sort
を使用することができますそして、新しいリストにして、正常に戻って単語を変換する...
for(int i = 0; i < wordsToArrange.size(); i++){
List<String> charArray = new ArrayList<String>(Arrays.asList(wordsToArrange.get(i).split("")));
int arraySize = wordsToArrange.get(i).length();
Collections.replaceAll(charArray, alphabet.get(0), "a");
Collections.replaceAll(charArray, alphabet.get(1), "b");
Collections.replaceAll(charArray, alphabet.get(2), "c");
Collections.replaceAll(charArray, alphabet.get(3), "d");
Collections.replaceAll(charArray, alphabet.get(4), "e");
Collections.replaceAll(charArray, alphabet.get(5), "f");
Collections.replaceAll(charArray, alphabet.get(6), "g");
Collections.replaceAll(charArray, alphabet.get(7), "h");
Collections.replaceAll(charArray, alphabet.get(8), "i");
Collections.replaceAll(charArray, alphabet.get(9), "j");
Collections.replaceAll(charArray, alphabet.get(10), "k");
Collections.replaceAll(charArray, alphabet.get(11), "l");
Collections.replaceAll(charArray, alphabet.get(12), "m");
Collections.replaceAll(charArray, alphabet.get(13), "n");
Collections.replaceAll(charArray, alphabet.get(14), "o");
Collections.replaceAll(charArray, alphabet.get(15), "p");
Collections.replaceAll(charArray, alphabet.get(16), "q");
Collections.replaceAll(charArray, alphabet.get(17), "r");
Collections.replaceAll(charArray, alphabet.get(18), "s");
Collections.replaceAll(charArray, alphabet.get(19), "t");
Collections.replaceAll(charArray, alphabet.get(20), "u");
Collections.replaceAll(charArray, alphabet.get(21), "v");
Collections.replaceAll(charArray, alphabet.get(22), "w");
Collections.replaceAll(charArray, alphabet.get(23), "x");
Collections.replaceAll(charArray, alphabet.get(24), "y");
Collections.replaceAll(charArray, alphabet.get(25), "z");
StringBuilder listString = new StringBuilder();
for (String s : charArray)
listString.append(s+"");
System.out.println(listString);
これが出力されるように、すべての文字を上書きするようだ:
今日の私の脳は非常に霧がかかっています。私はいくつかの種類の解決方法があるまで、この方法を最後まで押し込むことができますが、これは効率的な方法ではありません。何か案は?
現時点では、リストから単語を取り出し、それをchar配列にして、別の文字を別々に変更してから、新しいchar配列を文字列に戻してから、新しい単語(または新しいリストを作る)。私がすべての言葉を読んだ後、私はリストを持っています。私はそれにcollection.sort
を使用し、通常の言葉に戻って変換するが、今正しい順序で。
私の最初の質問: Sorting list of words according to list of characters in Java
"しかし、私はstackoverflowからアイデアを得ました"あなたはその答えへのリンクを追加する必要があります。 –
両方をリンクしました – JavaJuniorSoon2bSenior