2013-03-19 2 views
0

как сортировать ArrayList, имеющие элементы, такие каксортировать алфавитно-цифровой ArrayList в порядке возрастания

02112-S1530 
02112-S1529 
02112-S1531 

в порядке возрастания.

Я использую Collection.sort (название списка);
но получить выход

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

Используйте компаратор для сортировки алфавитно-цифрового анализатора. –

+0

Вам нужно определить свой собственный «comapartor». Здесь вы можете изменить критерии сравнения для сортировки. – Anubhab

+1

Не думаю, что есть причина, по которой можно уменьшить этот пост. – Maroun

ответ

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

0

Define компаратор как этот

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