Android 对汉字字符串按照拼音排序 Java

本文探讨了如何在Java中利用Collator类实现对包含汉字的字符串按照拼音排序的方法,通过实例代码展示了指定不同Locale对排序结果的影响。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

今天上水木发现有人问怎样对汉字字符串按照拼音排序,查了一遍文档,发现java缺省对字符串是按照每个Unicode字符的编码大小排序的。接着查到(要是没有了Google,世界将会怎样?)有一个java.text.Collator类,但是论坛上有人说这个类没用,和缺省的排序效果一样,要用C#写一个类生成java程序。这要是真的,那还学java干嘛?

于是把别人的Test.java改了改,分别用指定的Locale和不指定Locale试了试,结果都是OK的:

import java.util.*;
import java.text.*;
public class Test2 {
    public static void testDefault() {
       String[] arr = {"张三", "李四", "王五", "刘六"};
       Arrays.sort(arr);
       for (int i = 0; i < arr.length; i++)
         System.out.println(arr[i]);
       System.out.println();
    }   
    public static void testChinaLocale() {
       //Comparator cmp = (RuleBasedCollator)java.text.Collator.getInstance(java.util.Locale.CHINA);//try testing various locales
       Comparator cmp = Collator.getInstance(java.util.Locale.CHINA);
       String[] arr = {"张三", "李四", "王五", "刘六"};
       Arrays.sort(arr, cmp);
       for (int i = 0; i < arr.length; i++)
         System.out.println(arr[i]);
       System.out.println();
    }      
    public static void testDefaultLocale() {
       //Comparator cmp = (RuleBasedCollator)java.text.Collator.getInstance(java.util.Locale.CHINA);//try testing various locales
       Comparator cmp = Collator.getInstance();
       String[] arr = {"张三", "李四", "王五", "刘六"};
       Arrays.sort(arr, cmp);
       for (int i = 0; i < arr.length; i++)
         System.out.println(arr[i]);
       System.out.println();
    }      
    public static void   main(String args[]) {
       testDefault();
       testChinaLocale();
       testDefaultLocale();
    }
}

输出结果:

刘六

张三

李四

王五

李四

刘六

王五

张三

李四

刘六

王五

张三


原文出自:http://hi.baidu.com/luyanlong1/item/4d80b531994b2194c2cf2911

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值