Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 折叠式比较仪_Java_Sorting_Localization - Fatal编程技术网

Java 折叠式比较仪

Java 折叠式比较仪,java,sorting,localization,Java,Sorting,Localization,我有一个beans OptionItemDTO(properties label and value)的集合,目前我正在使用类似这样的方法按标签排序: Collections.sort(combo, new LabelComparator()) 问题是它不会对重音元音进行排序(我的语言环境是西班牙语) 根据这个文档,我必须使用Collator类 但是,如果我将排序与collator一起使用,我就不能使用comparator(反之亦然)。有什么想法吗 提前谢谢 您的LabelComparator

我有一个beans OptionItemDTO(properties label and value)的集合,目前我正在使用类似这样的方法按标签排序:

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>