私が達成したいのは、オブジェクトの集合を文字列値でソートすることです。ただし、コレーターを使用してロケールに依存する方法で。パフォーマンス上の理由から、Java APIはCollationKeyの使用がはるかに高速であると述べているため、CollatorKeyクラスではなくCollator compare()メソッド(以下のコードのように)を使用したくありません。
しかし、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);
...