小编din*_*ngy的帖子

用Java对UTF-16字符串中的字符进行排序

TLDR

Java使用两个字符来表示UTF-16。使用Arrays.sort(不稳定的排序)会使字符排序混乱。我应该将char []转换为int []还是有更好的方法?

细节

Java将字符表示为UTF-16。但是Character类本身会包装char(16位)。对于UTF-16,它将是2的数组char(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));
    }
}
Run Code Online (Sandbox Code Playgroud)

输出:

Initial String: 
Sorted String: ????
Run Code Online (Sandbox Code Playgroud)

java sorting string utf-16

16
推荐指数
2
解决办法
803
查看次数

标签 统计

java ×1

sorting ×1

string ×1

utf-16 ×1