Collator类 比较字符串(汉字大小)

Collator 类执行区分语言环境的 String 比较。使用此类可为自然语言文本构建搜索和排序例程。 
Collator 是一个抽象基类。其子类实现具体的整理策略。Java 平台目前提供了 RuleBasedCollator 子类,它适用于很多种语言。还可以创建其他子类,以处理更多的专门需要。 
与其他区分语言环境的类一样,可以使用静态工厂方法 getInstance 来为给定的语言环境获得适当的 Collator 对象。如果需要理解特定整理策略的细节或者需要修改策略,只需查看 Collator 的子类即可。 
下面的示例显示了如何使用针对默认语言环境的 Collator 比较两个字符串。 

// Compare two strings in the default locale
 Collator myCollator = Collator.getInstance();
 if( myCollator.compare("abc", "ABC") < 0 )
     System.out.println("abc is less than ABC");
 else
     System.out.println("abc is greater than or equal to ABC");

 可以设置 Collator 的 strength 属性来确定比较中认为显著的差异级别。提供了四种 strength:PRIMARY、SECONDARY、TERTIARY 和 IDENTICAL。对语言特征的确切 strength 赋值和语言环境相关。例如在捷克语中,"e" 和 "f" 被认为是 PRIMARY 差异,而 "e" 和 "ě" 则是 SECONDARY 差异,"e" 和 "E" 是 TERTIARY 差异,"e" 和 "e" 是 IDENTICAL。下面的示例显示了如何针对美国英语忽略大小写和重音。 
 //Get the Collator for US English and set its strength to PRIMARY
 Collator usCollator = Collator.getInstance(Locale.US);
 usCollator.setStrength(Collator.PRIMARY);
 if( usCollator.compare("abc", "ABC") == 0 ) {
     System.out.println("Strings are equivalent");
 }
 如果正好比较 String 一次,则 compare 方法可提供最佳性能。但在对 String 列表排序时,通常需要对每个 String 进行多次比较。在这种情况下,CollationKey 可提供更好的性能。CollationKey 类将一个 String 转换成一系列可与其他 CollationKey 进行按位比较的位。CollationKey 是由 Collator 对象为给定的 String 所创建的。
注:不能比较由不同 Collator 创建的 CollationKey。

compare

public abstract int compare(String source,String target)

根据此 Collator 的整理规则来比较源字符串和目标字符串。根据源字符串是小于、等于或大于目标字符串来返回负整数、零或正整数。有关此方法的使用示例,请参阅 Collator 的类描述。 

对于一次比较,此方法具有最佳性能。如果在多次比较中涉及给定的 String,则 CollationKey.compareTo 具有最佳性能。有关使用 CollationKeys 的示例,请参阅 Collator 的类描述。 
参数:
source - 源字符串。
target - 目标字符串。 
返回:

返回一个整数值。如果源小于目标,则该值小于零;如果源等于目标,则该值为零;如果源大于目标,则该值大于零。

示例代码:

// 汉字比较大小
		String s1 = "话";
		String s2 = "化";
		
		Collator collator = Collator.getInstance();
		int compare = collator.compare(s1, s2);
		System.out.println(compare);


  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值