2013-03-19 162 views
0

如何以升序具有數組列表元素,如排序字母數字數組列表按照升序

02112-S1530 
02112-S1529 
02112-S1531 

排序。

我正在使用Collection.sort(List name);
但得到的輸出

02112-S1531 
02112-S1529 
02112-S1530 

預期成果是:

02112-S1529 
02112-S1530 
02112-S1531 

我不喜歡

List<String> gbosIdsList = new ArrayList<String>(); 
gbosIdsList.add("02112-S1530"); 
gbosIdsList.add("02112-S1529"); 
gbosIdsList.add("02112-S1531"); 
Collections.sort(gbosIdsList); 
Iterator itr = gbosIdsList.iterator(); 
    while(itr.hasNext()){ 
     System.out.println(itr.next());   
} 
+0

使用比較器對字母數字式數組列表進行排序。 – 2013-03-19 10:02:54

+0

你需要定義你自己的'comapartor'.There你可以修改比較標準排序.. – Anubhab 2013-03-19 10:03:17

+1

我不認爲有什麼理由downvote這篇文章。 – Maroun 2013-03-19 10:04:01

回答

1

我想你的代碼,並得到了輸出:

02112-S1529 
02112-S1530 
02112-S1531 

此外,你必須讓你的迭代器通用

泛型101:don't use Raw type in new code

Iterator<String> itr = gbosIdsList.iterator(); 
+0

請看這裏:http://stackoverflow.com/questions/11176227/simple-way-to-sort-strings-in-the-alphabetical-訂購 – Michael 2013-03-19 11:04:06

0

定義比較喜歡這個

public class MyComparator implements Comparator<String> { 

    /* (non-Javadoc) 
    * @see java.util.Comparator#compare(java.lang.Object, java.lang.Object) 
    */ 
    @Override 
    public int compare(String arg0, String arg1) { 
     //Do your processing here 
     //and 
     //return +1 if arg0 > arg1 
     //return 0 if arg0 == arg1 
     //return -1 if arg0 < arg1 
     return 0; 
    } 

} 

然後添加到您的sort

List<String> gbosIdsList = new ArrayList<String>(); 
//add values 
Collections.sort(gbosIdsList,new MyComparator()); 

FYR您可以閱讀this