2014-10-17 11 views
9

के साथ एक सरणी को ऑर्डर करना क्या कोई जानता है कि विशेष अक्षरों वाले शब्दों के साथ सरणी को ऑर्डर कैसे करें?विशेष वर्णों जैसे कि

Arrays.sort(anArray);

रिटर्न 'Albacete''Álava' से पहले, और मैं 'Álava''Albacete' से पहले चाहते हैं।

धन्यवाद एक बहुत

+1

आपको अपना खुद का 'तुलनित्र' लिखना है और इसे 'Arrays.sort() 'पर भेजना है। डिफ़ॉल्ट रूप से, स्ट्रिंग्स को * प्राकृतिक ऑर्डर * के आधार पर क्रमबद्ध किया जाता है। – TheLostMind

उत्तर

10

आप बस के रूप में यदि वे लहजे नहीं था, तो आप निम्न का उपयोग कर सकते तार को सॉर्ट करना चाहते हैं:

Collections.sort(strs, new Comparator<String>() { 
    @Override 
    public int compare(String o1, String o2) { 
     o1 = Normalizer.normalize(o1, Normalizer.Form.NFD); 
     o2 = Normalizer.normalize(o2, Normalizer.Form.NFD); 
     return o1.compareTo(o2); 
    } 
}); 

संबंधित प्रश्न:

अधिक परिष्कृत उपयोग के मामलों के लिए आप java.text.Collator पर पढ़ना चाहेंगे। यहाँ एक उदाहरण है:

Collections.sort(strs, new Comparator<String>() { 
    @Override 
    public int compare(String o1, String o2) { 
     Collator usCollator = Collator.getInstance(Locale.US); 
     return usCollator.compare(o1, o2); 
    } 
}); 

पूर्वनिर्धारित मिलान के किसी नियम का अपनी जरूरतों को पूरा करते हैं, तो आप java.text.RuleBasedCollator उपयोग करने का प्रयास कर सकते हैं।

+0

(ध्यान दें कि यदि आप सरणी के साथ काम कर रहे हैं और सूचियों के साथ काम नहीं कर रहे हैं तो आप 'Collections.sort' से 'Arrays.sort' में बदल सकते हैं।) – aioobe

0

आप RuleBasedCollator

RuleBasedCollator वर्ग पर एक नज़र रखना चाहिए कोलेटर का एक ठोस उपवर्ग कि एक सरल, डेटा के आधार पर, टेबल कोलेटर प्रदान करता है। इस कक्षा के साथ आप एक अनुकूलित तालिका-आधारित कॉललेटर बना सकते हैं। नियमों को सॉर्ट करने के लिए RuleBasedCollator मानचित्र वर्ण। (अन्य उपवर्गों अधिक जटिल भाषाओं के लिए इस्तेमाल किया जा सकता)

RuleBasedCollator दक्षता के लिए निम्नलिखित सीमाएं होती हैं:

एक विशेष मिलान नियम एक के द्वारा नियंत्रित यह निर्दिष्ट है, तो पूरे कोलेटर वस्तु पर लागू होता। सभी गैर-वर्णित वर्ण को कॉलेशन ऑर्डर के अंत में हैं।

संबंधित मुद्दे