美文网首页
JAVA中的中文顺序比较

JAVA中的中文顺序比较

作者: 倚仗听江 | 来源:发表于2021-07-06 14:21 被阅读0次

在Java中我们常用compareTo来比较两个对象的大小,如:

String a = "a";
String b = "b";
System.out.println(a.compareTo(b)); //-1

在比较的字符串是英文字符时,这种方法是正确的。但如果是中文字符,如:

String c = "啊啊";
String d = "啊吧";
System.out.println(c.compareTo(d)); //291

这是因为这个方法会将两个字符串都转化为char类型,再去逐位比较其ASCII码的大小,ASCII码是英文字符的编码,而中文字符的编码主要采用的是GBK。
因此在比较中文字符串大小的时候不能直接使用compareTo方法。
可使用Collator类来解决这个问题:
该类会根据语言环境进行String的比较,使用静态工厂方法 getInstance 来为给定的语言环境获得适当的 Collator 对象。
具体代码如下:

//创建中文语言环境的整理对象
Collator collator = Collator.getInstance(Locale.CHINA);
//CollationKey是Collator用来将String元素转换成可以彼此比较位的类
CollationKey collationC = collator.getCollationKey(c);
CollationKey collationD = collator.getCollationKey(d);
System.out.println(collator.compare(collationC.getSourceString(), collationD.getSourceString())); //-1

相关文章

  • JAVA中的中文顺序比较

    在Java中我们常用compareTo来比较两个对象的大小,如: 在比较的字符串是英文字符时,这种方法是正确的。但...

  • Java程序的顺序问题

    一、Java中的执行顺序 二、Java中的赋值顺序 一、Java中的执行顺序 1.静态块2.块3.构造器4.父类构...

  • (11)CAS

    什么是CAS 简单的说,CAS就是compare and swap,翻译成中文就是比较与交换.在java多线程中,...

  • Java中的比较?

    参考Java基础之comparator和comparable的区别以及使用 1.== 和 equals的区别 2....

  • 面试官:Java中线程是按什么顺序执行的?

    摘要:Java中多线程并发的执行顺序历来是面试中的重点,掌握Java中线程的执行顺序不仅能够在面试中让你脱颖而出,...

  • java 中的IO(字符流)

    以字符的方式读取 java中的 中文 在不同的编码中 占据不同的字节,java中提供了 字符流的方式读取中文 字符...

  • Android开发规范

    一、Android编码规范 1.java代码中不出现中文,最多注释中可以出现中文(中文尽量放在String.xml...

  • 聊聊 Java 注解(上)

    Java 语言提供了一个很好的特性 Annotation, 中文常翻译为注解,在平时的编程中也比较常用,最明显的好...

  • Java中与泛型相关的接口 之 术语定义

    在Java泛型编程中,很多单词从英文翻译中文后会变味,令人难以理解。在很多讲解Java泛型的中文作品中,对于同一英...

  • Java中对象的比较

    Java中要比较对象的大小或者要对对象的集合进行排序,需要通过比较这些对象的某些属性大小来确定它们之间的大小关系。...

网友评论

      本文标题:JAVA中的中文顺序比较

      本文链接:https://www.haomeiwen.com/subject/jhfgultx.html