一种区分语言环境的 String 比较方法
来源:互联网 发布:淘宝网上有云克药卖吗? 编辑:程序博客网 时间:2024/06/05 05:45
例如:
//ResolveInfo的按名字排序 Collections.sort(resolveInfos,new ResolveInfo.DisplayNameComparator(pm)); //类似的packageItemInfo的按名字排序实现 public static class DisplayNameComparator implements Comparator<PackageItemInfo> { public DisplayNameComparator(PackageManager pm) { mPM = pm; } public final int compare(PackageItemInfo aa, PackageItemInfo ab) { CharSequence sa = aa.loadLabel(mPM); if (sa == null) sa = aa.name; CharSequence sb = ab.loadLabel(mPM); if (sb == null) sb = ab.name; return sCollator.compare(sa.toString(), sb.toString()); } private final Collator sCollator = Collator.getInstance(); private PackageManager mPM; }
类 Collator
Collator 类执行区分语言环境的 String 比较。使用此类可为自然语言文本构建搜索和排
序例程。Collator 是一个抽象基类。其子类实现具体的整理策略。Java 平台目前提供了 RuleBasedCollator 子类,它适用于很多种语言。还可以创建其他子类,以处理更多的专门需要。
与其他区分语言环境的类一样,可以使用静态工厂方法 getInstance 来为给定的语言环境
获得适当的 Collator 对象。如果需要理解特定整理策略的细节或者需要修改策略,只需查
看 Collator 的子类即可。下面的示例显示了如何使用针对默认语言环境的 Collator 比较两个字符串。
// Compare two strings in the default localeCollator 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 PRIMARYCollator 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。有关使用 CollationKey 的示例,
请参阅 CollationKey 的类描述。
类 CollationKey
CollationKey 表示遵守特定 Collator 对象规则的 String。比较两个 CollationKey 将>返回它们所表示的 String 的相对顺序。使用 CollationKey 来比较 String 通常比使用 Collator.compare 更快。因此,当必须多次比较 String 时(例如,对一个 String 列表进
行排序),使用 CollationKey 会更高效。不能直接创建 CollationKey。而是通过调用 Collator.getCollationKey 来生成。只能比
较同一个 Collator 对象生成的 CollationKey。为一个 String 生成 CollationKey 涉及到检查整个 String,并将它转换成可以按位比较
的一系列位。一旦生成了键,就允许进行快速比较。当 String 需要多次比较时,以更快速
的比较方式生成键的成本可以忽略不计。另一方面,比较的结果通常由每个 String 的第一
对字符确定。Collator.compare 只检查实际需要比较的字符,当进行单次比较时,此比较>方式更快。以下例子显示如何使用 CollationKey 对一个 String 列表进行排序。
// Create an array of CollationKeys for the Strings to be sorted.Collator myCollator = Collator.getInstance();CollationKey[] keys = new CollationKey[3];keys[0] = myCollator.getCollationKey("Tom");keys[1] = myCollator.getCollationKey("Dick");keys[2] = myCollator.getCollationKey("Harry");sort( keys );//...// Inside body of sort routine, compare keys this wayif( keys[i].compareTo( keys[j] ) > 0 )// swap keys[i] and keys[j]//...// Finally, when we've returned from sort.System.out.println( keys[0].getSourceString() );System.out.println( keys[1].getSourceString() );System.out.println( keys[2].getSourceString() );
- 一种区分语言环境的 String 比较方法
- string 比较常用的方法
- String类的比较方法
- String比较常用的方法
- 比较高效的一种分页方法
- 比较高效的一种分页方法
- dblp解析--一种比较蠢的方法
- sqlserver分页比较高效的一种方法
- 扩展std::string的一种方法
- 一种std::string的格式化方法
- PHP 区分测试环境 生产环境的方法 环境变量
- 一个string不区分大小写查找的方法(函数)
- Java String关于indexof方法区分大小写的一个小贴士
- cpp不区分大小写比较字符串string
- cpp不区分大小写比较字符串string
- String、StringBuffer、StringBuilder区分和性能比较
- 另外一种搭建nginx_lua环境的方法
- c语言struct的一种初始化方法
- jquery.autocomplete.js经过修改,支持各种浏览器、支持中文输入!
- java/android 引用类型详讲
- linux下安装golang(linux(centos/ubuntu) install golang)
- 黑盒测试和白盒测试http://www.uml.org.cn/Test/200711214.asp
- Longest Palindromic Substring
- 一种区分语言环境的 String 比较方法
- MFC 消息(缺自定义消息)
- make oldconfig /config /defconfig /menuconfig
- 单一继承下无虚函数覆盖__虚函数表中的虚函数指针的获取
- 模块的写法
- 我的IOS库-任意颜色渐变的圆环
- ListView Notes
- jsoncpp Json::Value 成员变量/全局变量析构时引起崩溃问题解决
- 7.PMAC下位机-回零程序的编写