2015-12-09 9 views
5

मैंने तुलनित्रों के बारे में कई पोस्ट की जांच की है, लेकिन मैं एक बिंदु पर अटक गया।यूटीएफ 8 अक्षरों के लिए जावा तुलनाकर्ता

तुलनाकारी मैं 'का उपयोग कर रहा:

@Override 
    public int compare(BaseFolder arg0, BaseFolder arg1) { 
     try { 
      Object value1 = arg0.getName(); 
      Object value2 = arg1.getName(); 

      Collator lithuanianCollator = Collator.getInstance(new Locale("lt_LT")); 
      lithuanianCollator.setStrength(Collator.PRIMARY); 
      int value = lithuanianCollator.compare(value1.toString(), value2.toString()); 

      return SortOrder.ASCENDING.equals(sortOrder) ? value : -1 * value; 
     } 
     catch(Exception e) { 
      throw new RuntimeException(); 
     } 
    } 

यह तरह करता है, लेकिन यह लिथुआनियाई पत्र पर ठीक से काम नहीं करता है, और मैं पता नहीं क्यों मिला है।

संपादित करें: लगता है कि सॉर्टिंग स्ट्रिंग लंबाई पर निर्भर करता है, किसी कारण से।

उदाहरण के लिए।

enter image description here

संपादित करें:

public class BaseFolder { 
    private String id; 
    private String name; 
    private String description; 
    private String lastModifiedBy; 
    private String lastModificationDate; 
    private String createdBy; 
    private String creationDate; 
    private String parentId; 

    public BaseFolder() { 
    } 
    public BaseFolder(CmisObject obj) { 
     this.id = obj.getId(); 
     this.name = obj.getName(); 
     this.description = obj.getDescription(); 
     this.lastModificationDate = DateFormatUtils.format(obj.getLastModificationDate().getTime(), "yyyy-MM-dd"); 
     this.lastModifiedBy = obj.getLastModifiedBy(); 
     this.createdBy = obj.getCreatedBy(); 
     this.creationDate = DateFormatUtils.format(obj.getCreationDate().getTime(), "yyyy-MM-dd"); 


    } 
    public BaseFolder(String id, String name, String description, String parentId) { 
     super(); 
     this.id = id; 
     this.name = name; 
     this.description = description; 
     this.parentId = parentId; 
    } 

    public Map<String, Object> getProperties() { 
     Map<String, Object> properties = new HashMap<String, Object>(); 
     properties.put(PropertyIds.PARENT_ID, "cmis:parentId"); 
     properties.put(PropertyIds.OBJECT_TYPE_ID, "cmis:folder"); 
     properties.put(PropertyIds.NAME, getName()); 
     properties.put(PropertyIds.DESCRIPTION, getDescription()); 
     return properties; 
    } 

जावा 8 का उपयोग करना, Primefaces, JSF

+0

मुझे लगता है कि और 'va lue2' प्रकार ऑब्जेक्ट टूस्ट्रिंग() ऑब्जेक्ट्स के स्ट्रिंग प्रस्तुति देता है। क्या आप 'बेसफोल्डर' का कोड साझा कर सकते हैं? – sinclair

+0

सॉर्टिंग के साथ क्या गलत है? – reos

+0

संपादित: बेसफोल्डर वर्ग। और सॉर्टिंग के बारे में। पहले आना चाहिए, फिर, या मैं į – iJava

उत्तर

2

मैं इस कोड ऑर्डर करने के लिए

public static void main(String[] args) { 

    String[] words = {"ą", "a", "į", "i", "ąąąąą", "aaaaa"}; 

    Collator en_USCollator = Collator.getInstance(new Locale("en","US")); 
    Collator lt_LTCollator = Collator.getInstance(new Locale("lt","LT")); 

    sortStrings(en_USCollator, words); 
    System.out.println(Arrays.toString(words)); 
    sortStrings(lt_LTCollator, words); 
    System.out.println(Arrays.toString(words)); 
} 

public static void sortStrings(Collator collator, String[] words) { 
    String tmp; 
    for (int i = 0; i < words.length; i++) { 
     for (int j = i + 1; j < words.length; j++) { 
      if (collator.compare(words[i], words[j]) > 0) { 
       tmp = words[i]; 
       words[i] = words[j]; 
       words[j] = tmp; 
      } 
     } 
    }  
} 

यह आउटपुट

है की कोशिश की

अद्यतन

आप उपयोग कर सकते हैं RuleBasedCollator

String simple = "< a< ą< i< į"; 
    RuleBasedCollator lt_LTCollator = new RuleBasedCollator(simple); 

यह आउटपुट

[a, aaaaa, ą, ąąąąą, i, į] 

यहाँ है और अधिक जानकारी के `value1` के बाद से http://docs.oracle.com/javase/7/docs/api/java/text/RuleBasedCollator.html

+0

ही यहाँ के रूप में, यह [एक, aaaaa, एक, aaaaa, मैं, मैं] संपादित किया जाना चाहिए , यदि इससे कोई फर्क पड़ता है – iJava

+0

मैंने उत्तर – reos

+0

संपादित किया है तो मुझे यह बताएं कि इससे आपकी सहायता हुई है। – reos

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