问题描述
Excel中对汉字排序是按照拼音排序的,而在Java中使用Collections.sort(list)排序,排序结果不符合拼音排序规则。
List<String> list = Arrays.asList("一", "二", "三");
Collections.sort(list);
System.out.println("默认排序方式: " + list);
Collections.sort(list, Collator.getInstance());
System.out.println("指定排序方式: " + list);
System.out.println("unicode码值:");
System.out.println("一 = " + (int) '一');
System.out.println("二 = " + (int) '二');
System.out.println("三 = " + (int) '三');
执行结果
默认排序方式: [一, 三, 二]
指定排序方式: [二, 三, 一]
unicode码值:
一 = 19968
二 = 20108
三 = 19977
原因说明
Collections.sort默认是根据unicode码值排序,不符合拼音排序规则。
解决办法
指定排序方式
Collections.sort(list, Collator.getInstance());
结果为按拼音排序