2つの文字列s1とs2があり、s1の文字の出現順序に基づいてs2を並べ替えたいのですが、s2に他のアルファベットが残っている場合は、アルファベット順に並べ替えます。
私が次のものを持っていると仮定します。
文字列s1="war";
String s2="プログラマーであることは素晴らしいです";
出力:waaarrrIbeeeeggimmmnoopsst。
私はすでにそれを行うためのコードを書いていますが、それを解決するためにコンパレータ/比較可能なインターフェイスを使用してそれが可能かどうか疑問に思っていました。
以下にリストされているのは私のコードスニペットです。
public class Sort {
private static String a = "war";
private static String b = "Its awesome being a programmer";
static List<Character> list = new ArrayList<>();
static public void main(String[] args) {
Character s;
Character x;
System.out.println("String to be sorted: '" + b + "'");
System.out.println("Key for sort: '" + a + "'");
/*
* put all the string in a list
*/
for (int i = 0; i < b.length(); i++) {
s = b.charAt(i);
if (s != ' ') {
list.add(s);
}
}
/*
* compare individual chac in key with individaul char in string to sort
*/
StringBuilder sb = new StringBuilder();
for (int j = 0; j < a.length(); j++) {
x = a.charAt(j);
for (int k = 0; k < b.length(); k++) {
s = b.charAt(k);
if (x == s) {
sb.append(s);
list.remove(x);
}
}
}
/*
* check if list is empty if not, sort and append the rest to the stringbuilder
*/
if (!list.isEmpty()) {
Collections.sort(list);
for (char c : list) {
sb.append(c);
}
}
System.out.println("Sorted version of string: '" + sb.toString() + "'");
}
}