2013-08-10 1 views
1
private ArrayList<String> mArrayList = new ArrayList<String>(); 

    mArrayList.clear(); 

    mArrayList.add("test 3"); 
    mArrayList.add("test 21"); 
    mArrayList.add("test 4"); 
    mArrayList.add("test 6"); 
    mArrayList.add("test 1"); 

    Collections.sort(mArrayList); 

    for (int i = 0; i < mArrayList.size(); i++) { 

     Log.e("TAG", "" + mArrayList.get(i)); 
    } 

결과는 다음과 같습니다Android에서 자연 정렬 순서로 ArrayList를 정렬 하시겠습니까?

test 1 
test 21 
test 3 
test 4 
test 6 

하지만 내가 원하는 :

test 1 
test 3 
test 4 
test 6 
test 21 

내가 그것을 분류되어 있지만 완벽하게, 그렇게하는 방법 모르겠어요, 당신이 어떤 생각을 가지고 있다면, 제발 나와 공유하십시오.

+0

유형이 "자바 ArrayList를 사용자 정의 정렬 순서" –

+0

은, Collections.sort (ArrayList에); 또는 비교기를 사용하십시오 – KOTIOS

+0

이것을 ** 자연 정렬이라고합니다 **. –

답변

7

좋은 해결책하지만 당신은 아이디어를 얻을 것이다,이 시도하지 않지만 :

Collections.sort(mArrayList, new Comparator<String>() { 
      public int compare(String s1, String s2) { 
       Integer i1 = Integer.parseInt(s1.split("test ")[1]); 
       Integer i2 = Integer.parseInt(s2.split("test ")[1]); 
       return i1.compareTo(i2); 
      }); 

은 기본적으로 당신은 어떤 객체를 정렬 할 수 있습니다. 따라서 모든 변수가 포함 된 Data 클래스를 사용하는 것이 좋습니다. 변수를 기반으로 이러한 객체를 정렬 할 수 있습니다. 그래서 예. 검색 엔진에

public class Data{ 
    public String test; 
    public Integer i; 

} 

ArrayList<Data> mArrayList = new ArrayList<Data>(); 
. 
. 
. 


Collections.sort(mArrayList, new Comparator<Data>() { 
      public int compare(Data d1, Data d2) { 
       return d1.i.compareTo(d2.i); 
      }); 
+1

문자열 검사를 위해 몇 가지 검사를 추가해야합니다. 잘 형성되어 있음 – assylias

+0

누군가가 실제로 첫 번째 솔루션을 사용하려면 예 점검을 추가해야합니다. –

+0

@ M-WaJeEh,이 일을하는 방법을 이해할 수 없다, 나는 안드로이드에 처음이다. pls는 나를 도와 준다 –