2011-11-30 46 views
6

我有豆OptionItemDTO(属性标签和值)的集合,目前我使用的是这样的标签进行排序:校书郎加上比较

Collections.sort(combo, new LabelComparator()) 

的问题是,它没有那种强调元音(我的语言环境是西班牙语)。

根据此文档http://blogs.oracle.com/CoreJavaTechTips/entry/sorting_strings我必须使用Collat​​or类。

但是,如果我用collat​​or排序,我不能使用比较器(反之亦然)。有任何想法吗?

在此先感谢!

+1

从Java文件: 排序器实现比较所以它已经是一个比较。 你能告诉我们代码不起作用吗? http://docs.oracle.com/javase/1.4.2/docs/api/java/text/Collat​​or.html – GETah

回答

10

你LabelComparator应该委托给一个分页器到标签与您的DTO的:

public int compare(OptionItemDTO dto1, OptionItemDTO dto2) { 
    return collator.compare(dto1.getLabel(), dto2.getLabel()); 
} 
+0

像魅力一样工作,merci beaucoup –

+0

但请注意,Collat​​or的JavaDoc建议使用Collat​​ionKeys进行排序:http://docs.oracle.com/javase/6/docs/api/java/text/Collat​​or.html – Puce

+0

警告:您应该使用适当的语言环境创建整理器。 –

2

我已经写了一个小的框架与与Collat​​ionKeys(而不是Collat​​or对象)的集合对象进行排序:

http://softsmithy.sourceforge.net/lib/docs/api/org/softsmithy/lib/text/Localizables.html

你只需要实现一个Localizer(或使你的POJO实现Localizable)来提供一个字符串表示形式:

http://softsmithy.sourceforge.net/lib/docs/api/org/softsmithy/lib/text/Localizer.html

http://softsmithy.sourceforge.net/lib/docs/api/org/softsmithy/lib/text/Localizable.html

你可以看看在单元测试一些样品:

http://softsmithy.hg.sourceforge.net/hgweb/softsmithy/lib/main-golden/file/5c4db802573b/lib-core/src/test/java/org/softsmithy/lib/text/LocalizablesTest.java

图书馆是开源的。

https://sourceforge.net/projects/softsmithy/files/softsmithy/v0.1/

<dependency> 
    <groupId>org.softsmithy.lib</groupId> 
    <artifactId>lib-core</artifactId> 
    <version>0.1</version> 
</dependency>