TLDR
Java использует два символа для представления UTF-16.Использование Arrays.sort (нестабильная сортировка) портит последовательность символов.Должен ли я преобразовать char [] в int [] или есть лучший способ?
Подробности
Java представляет символ как UTF-16.Но сам класс Character
охватывает char
(16 бит).Для UTF-16 это будет массив из двух char
s (32 бита).
Сортировка строки символов UTF-16 с использованием встроенной сортировки путает с данными.(Arrays.sort использует двойную поворотную быструю сортировку, а Collections.sort использует Arrays.sort для выполнения тяжелой работы.)
Если быть точным, вы конвертируете char [] в int [] или есть лучший способсортировать?
import java.util.Arrays;
public class Main {
public static void main(String[] args) {
int[] utfCodes = {128513, 128531, 128557};
String emojis = new String(utfCodes, 0, 3);
System.out.println("Initial String: " + emojis);
char[] chars = emojis.toCharArray();
Arrays.sort(chars);
System.out.println("Sorted String: " + new String(chars));
}
}
Вывод:
Initial String: ???
Sorted String: ?????