Java 折叠式比较仪
我有一个beans OptionItemDTO(properties label and value)的集合,目前我正在使用类似这样的方法按标签排序:Java 折叠式比较仪,java,sorting,localization,Java,Sorting,Localization,我有一个beans OptionItemDTO(properties label and value)的集合,目前我正在使用类似这样的方法按标签排序: Collections.sort(combo, new LabelComparator()) 问题是它不会对重音元音进行排序(我的语言环境是西班牙语) 根据这个文档,我必须使用Collator类 但是,如果我将排序与collator一起使用,我就不能使用comparator(反之亦然)。有什么想法吗 提前谢谢 您的LabelComparator
Collections.sort(combo, new LabelComparator())
问题是它不会对重音元音进行排序(我的语言环境是西班牙语)
根据这个文档,我必须使用Collator类
但是,如果我将排序与collator一起使用,我就不能使用comparator(反之亦然)。有什么想法吗
提前谢谢 您的LabelComparator应该委托一个Collator来比较DTO的标签:
public int compare(OptionItemDTO dto1, OptionItemDTO dto2) {
return collator.compare(dto1.getLabel(), dto2.getLabel());
}
我编写了一个小框架,用于使用排序键(而不是排序符)对对象集合进行排序: 您只需实现一个定位器(或使您的POJO实现可本地化)即可提供字符串表示: 您可以查看一些示例的单元测试: 这个图书馆是开源的
org.softsmithy.lib
库核
0.1
来自Java文档:Collator实现了Comparator,因此它已经是一个Comparator了。你能告诉我们代码不起作用的地方吗?就像一个符咒,merci Beaucoup但是请注意,Collator的JavaDoc建议使用排序键进行排序:警告:您应该使用正确的区域设置创建排序键。@Puce:这只值这个价格,但要排序的列表非常长。在这种情况下,LabelComparator让我相信我们在谈论UI,所以我不会期望有成千上万的条目(如果是这样的话,那么它可能是非常糟糕的UI设计:-)
<dependency>
<groupId>org.softsmithy.lib</groupId>
<artifactId>lib-core</artifactId>
<version>0.1</version>
</dependency>