我想要实现的是按字符串值对对象集合进行排序。但是,以依赖于语言环境的方式使用整理器。由于性能原因,我不想使用 Collatorcompare() 方法(如下代码所示),而是使用 CollationKey 类,因为 java API 声明使用 CollationKey 要快得多。
但是如何使用 CollationKey 实现compareTo() 方法呢?据我了解,如果我要使用 CollationKey,我必须自己完全编写所有比较方法。所以我什至将不再能够使用 Collections.sort() 方法...我非常感谢一个易于理解的示例以及使用 CollationKey 对 Person 对象集合进行排序的最有效的实现。
谢谢你!
public class Person implements Comparable<Person> {
String lastname;
public int compareTo(Person person) {
//This works but it is not the best implementation for a good performance
Collator instance = Collator.getInstance(Locale.ITALY);
return instance.compare(lastname, person.lastname);
}
}
...
ArrayList list = new ArrayList();
Person person1 = new Person("foo");
list.add(person1);
Person person2 = new Person("bar");
list.add(person2);
Collections.sort(list);
...
class Person implements Comparable<Person> {
private static final Collator collator = Collator.getInstance(Locale.ITALY);
private final String lastname;
private final CollationKey key;
Person(String lastname) {
this.lastname = lastname;
this.key = collator.getCollationKey(lastname);
}
public int compareTo(Person person) {
return key.compareTo(person.key);
}
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)