カスタムComparator
オブジェクトを定義してから、を使用Collections.sort
してリストを並べ替えます。ここでは、ソートの引数として使用されたときにすべての母音を最後に移動するコンパレータを定義します。
class VowelSort implements Comparator<Character>
{
private static boolean isVowel(Character c)
{
return "AEIOUaeiou".contains(c.toString());
}
public int compare(Character arg0, Character arg1)
{
final boolean vowel0 = isVowel(arg0), vowel1 = isVowel(arg1);
//if neither of the characters are vowels, they are "equal" to the sorting algorithm
if (!vowel0 && !vowel1)
{
return 0;
}
//if they are both vowels, compare lexigraphically
if (vowel0 && vowel1)
{
return arg0.compareTo(arg1);
}
//vowels are always "greater than" consonants
if (vowel0 && !vowel1)
{
return 1;
}
//and obviously consonants are always "less than" vowels
if (!vowel0 && vowel1)
{
return -1;
}
return 0; //this should never happen
}
}
主に...
Collections.sort(chars,new VowelSort());
子音も並べ替えたい場合は、変更するだけです
//if neither of the characters are vowels, they are "equal" to the sorting algorithm
if (!vowel0 && !vowel1)
{
return 0;
}
に
//compare consonants lexigraphically
if (!vowel0 && !vowel1)
{
return arg0.compareTo(arg1);
}