2013-03-19 136 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