2012-02-13 18 views
20

मैं ArrayList<String> सॉर्ट करना चाहता हूं लेकिन समस्या मेरी मूल भाषा वर्ण है - मेरा वर्णमाला इस तरह है: a, ą, b, c, č, d, e, f ... z, ž। जैसा कि आप z चरित्र अंत से दूसरे हैं और ą वर्णमाला में दूसरा है, इसलिए जब मैं अपनी सरणी को सॉर्ट करता हूं तो इसे गलत तरीके से सॉर्ट किया जाता है। मेरे सभी मूल भाषा वर्ण सरणी के अंत में स्थानांतरित हो जाते हैं। उदाहरण:जावा सरणी सॉर्ट यूटीएफ -8

package lt; 

import java.util.ArrayList; 
import java.util.Collections; 

public class test { 
    public static void main(String[] args) { 
     List<String> items = new ArrayList<>(); 
     items.add("bbc"); 
     items.add("ąbc"); 
     items.add("abc"); 
     items.add("zzz"); 

     System.out.println("Unsorted: "); 
     for(String str : items) { 
      System.out.println(str); 
     } 

     Collections.sort(items); 
     System.out.println(); 

     System.out.println("Sorted: "); 
     for(String str : items) { 
      System.out.println(str); 
     } 
    } 
} 

आउटपुट:

Unsorted: 
bbc 
ąbc 
abc 
zzz 

Sorted: 
abc 
bbc 
zzz 
ąbc 

होना चाहिए:

Sorted: 
abc 
ąbc 
bbc 
zzz 
+1

देखें [यह सवाल] (http://stackoverflow.com/questions/4225523/collator-doesnt-sort-right-for-given-locale) –

उत्तर

22

आप Collator वर्ग का उपयोग करना चाहिए।

उदाहरण

लिए
Locale lithuanian = new Locale("lt_LT"); 
Collator lithuanianCollator = Collator.getInstance(lithuanian); 

और फिर इस कोलेटर

Collections.sort(theList, lithuanianCollator); 
+0

मेरा देश लिथुआनिया है, और भाषा लिथुआनियाई है, मुझे क्या करना चाहिए , क्योंकि अगर मैं सही हूं तो मेरी भाषा लोकेल कक्षा द्वारा समर्थित नहीं है? – Minutis

+2

यह उत्तर सही है, लेकिन तुलना करने की कोई आवश्यकता नहीं है - कोलेटर पहले से ही तुलनाकर्ता का उदाहरण है। Collections.sort (myList, Collator.getInstance (Locale.FRENCH)); पूरा कोड है –

+1

'कॉललेटर' ** डिज़ाइन द्वारा ** ** तुलनात्मक' है। एक और 'तुलनात्मक' बनाना अनावश्यक है। –

5

का उपयोग कर संग्रह को सॉर्ट आप Collator उपयोग कर सकते हैं वातावरण संवेदनशील स्ट्रिंग comparisions क्या करना है।

+0

धन्यवाद, लेकिन उपर्युक्त उत्तर अधिक सुधार हुआ है, सोचा कि आप सही हैं। – Minutis

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