简体   繁体   English

以升序对字母数字数组列表进行排序

[英]sort alphanumeric arraylist in ascending order

how to sort arraylist having elements like 如何对具有类似元素的arraylist进行排序

02112-S1530   
02112-S1529  
02112-S1531 

in ascending order. 升序排列。

i am using Collection.sort(List name); 我正在使用Collection.sort(列表名称);
but getting output 但是得到输出

02112-S1531  
02112-S1529   
02112-S1530  

Expected output is: 预期输出为:

02112-S1529  
02112-S1530   
02112-S1531

i did like 我喜欢

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());           
}

I tried your code and got the output: 我尝试了您的代码并获得了输出:

02112-S1529
02112-S1530
02112-S1531

Also, you have make your iterator generic 此外,您还使迭代器具有通用性

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

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

Define a comparator like this 定义这样的比较器

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;
    }

}

Then add this to your sort 然后将此添加到您的sort

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

FYR you can read this FYR你可以阅读这个

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM