2011-11-30 11 views
6

मैं सेम OptionItemDTO (गुण लेबल और मूल्य) का एक संग्रह है और मैं वर्तमान में लेबल से सॉर्ट करने के कुछ इस तरह उपयोग कर रहा हूँ:कोलेटर प्लस तुलनाकारी

Collections.sort(combo, new LabelComparator()) 

समस्या यह है कि तरह स्वरों पर बल दिया नहीं है (मेरा लोकेल स्पेनिश है)।

इस दस्तावेज़ के अनुसार http://blogs.oracle.com/CoreJavaTechTips/entry/sorting_strings मुझे एक कोलेटर श्रेणी का उपयोग करना होगा।

लेकिन अगर मैं कॉललेटर के साथ सॉर्ट का उपयोग करता हूं, तो मैं तुलनित्र (और इसके विपरीत) का उपयोग नहीं कर सकता। कोई विचार?

अग्रिम धन्यवाद!

+1

जावा डॉक्टर से: कोलेटर तुलनाकारी लागू करता है तो यह पहले से ही एक तुलनित्र है। क्या आप हमें वह कोड दिखा सकते हैं जहां यह काम नहीं करता है? http://docs.oracle.com/javase/1.4.2/docs/api/java/text/Collator.html – GETah

उत्तर

10

आपका LabelComparator अपने DTOs के लेबल तुलना करने के लिए एक कोलेटर प्रतिनिधि चाहिए:

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

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

एक आकर्षण की तरह काम करता है, मेर्सी beaucoup –

+0

ध्यान दें कि कोलेटर के जावाडोक सॉर्टिंग के लिए CollationKeys का उपयोग करने की सिफारिश करता है : http://docs.oracle.com/javase/6/docs/api/java/text/Collator.html – Puce

+0

चेतावनी: आपको उचित लोकेल के साथ कॉललेटर बनाना चाहिए। –

2

मैं CollationKeys (बल्कि collators से) के साथ वस्तुओं के संग्रह को सॉर्ट करने के लिए एक छोटा सा ढांचा लिखा है

तुम सिर्फ एक Localizer लागू (या अपने POJO स्थानीय बनाने को लागू करना) एक स्ट्रिंग प्रतिनिधित्व प्रदान करने के लिए करना होगा:

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> 
संबंधित मुद्दे