2017-09-27 8 views
1

질문Android : 마지막 폴더 이름으로 경로를 정렬하는 방법?

어떻게 마지막 폴더 이름으로 경로를 정렬 할 수 있습니까?

나는 내 ArrayList에이 방법을 정렬 할 수 있다는 사실을 알고

을 알고 무엇 :

Collections.sort(aL_dirsWithPicsInside, new Comparator<String>() { 
     @Override 
     public int compare(String s1, String s2) { 
      return s1.compareToIgnoreCase(s2); 
     } 
    }); 

출력 :

/storage/5AA6-2B7E/Army 
/storage/5AA6-2B7E/DCIM/Camera 
/storage/5AA6-2B7E/DCIM/Canyoning 
/storage/5AA6-2B7E/DCIM/Eigene Fotos/28.11.2015 - Arosa Eichhörnchenweg 
/storage/5AA6-2B7E/Guns 
/storage/emulated/0/DCIM/Friends 
/storage/emulated/0/DCIM/Screenshots 
/storage/emulated/0/DCIM/Südafrika 

그래서는 전체 문자열을 정렬합니다. 내가 필요로 무엇

이 출력 (마지막 폴더 이름으로 정렬)입니다 : 또한

/storage/5AA6-2B7E/DCIM/Eigene Fotos/28.11.2015 - Arosa Eichhörnchenweg 
/storage/5AA6-2B7E/Army 
/storage/5AA6-2B7E/DCIM/Camera 
/storage/5AA6-2B7E/DCIM/Canyoning 
/storage/emulated/0/DCIM/Friends 
/storage/5AA6-2B7E/Guns 
/storage/emulated/0/DCIM/Screenshots 
/storage/emulated/0/DCIM/Südafrika 
+0

당신이 마지막으로 수정 된 폴더를 정렬 기준 하시겠습니까? –

+0

이름으로 만 가능합니다. – MSeiz5

답변

2
Collections.sort(aL_dirsWithPicsInside, new Comparator<String>() { 
    @Override 
    public int compare(String s1, String s2) { 
     String[] segments1 = s1.split("/"); 
     String[] segments2 = s2.split("/"); 
     return segments1[segments1.length-1].compareToIgnoreCase(segments2[segments2.length-1]); 
    } 
}); 

, 당신은 그 경로가 올바른지 제어해야하며 마지막 부분이있다.

+0

그건 속임수 였어! 고마워. – MSeiz5

0

이 시도 :

Collections.sort(aL_dirsWithPicsInside, new Comparator<String>() { 
     @Override 
     public int compare(String s1, String s2) { 
      String str1 = s1.substring(s1.lastIndexOf("/")+1,s1.length()); 
      String str2 = s2.substring(s2.lastIndexOf("/")+1,s2.length()); 
      return str1.compareToIgnoreCase(str2); 
     } 
}); 
+0

답변 해 주셔서 감사합니다. 그러나 경로를 동일한 방식으로 정렬합니다. 밀러 (Miller)의 솔루션이 트릭을 수행했으며이를 수용 가능한 대답으로 표시했습니다. – MSeiz5

+0

아무런 문제가 없습니다. 실제로 대답을 뽑았습니다. 더 일반적이어서 경로의 모든 하위 디렉토리를 비교하기 때문입니다. –