-1

I have an arraylist of Files. I want to sort all the files according to the file name.

when I apply Collections.sort(files); to the arraylist following result was given.

(files = arraylist of files)

/data/data/com.threepi.icheops/files/xxx/image_1_0.jpg, /data/data/com.threepi.icheops/files/xxx/image_1_1.jpg, /data/data/com.threepi.icheops/files/xxx/image_1_10.jpg, /data/data/com.threepi.icheops/files/xxx/image_1_11.jpg, /data/data/com.threepi.icheops/files/xxx/image_1_2.jpg, /data/data/com.threepi.icheops/files/xxx/image_1_3.jpg, /data/data/com.threepi.icheops/files/xxx/image_1_4.jpg, /data/data/com.threepi.icheops/files/xxx/image_1_5.jpg, /data/data/com.threepi.icheops/files/xxx/image_1_6.jpg, /data/data/com.threepi.icheops/files/xxx/image_1_7.jpg, /data/data/com.threepi.icheops/files/xxx/image_1_8.jpg, /data/data/com.threepi.icheops/files/xxx/image_1_9.jpg

I want these files to be like this.

/data/data/com.threepi.icheops/files/xxx/image_1_0.jpg, /data/data/com.threepi.icheops/files/xxx/image_1_1.jpg, /data/data/com.threepi.icheops/files/xxx/image_1_2.jpg, /data/data/com.threepi.icheops/files/xxx/image_1_3.jpg, /data/data/com.threepi.icheops/files/xxx/image_1_4.jpg, /data/data/com.threepi.icheops/files/xxx/image_1_5.jpg, /data/data/com.threepi.icheops/files/xxx/image_1_6.jpg, /data/data/com.threepi.icheops/files/xxx/image_1_7.jpg, /data/data/com.threepi.icheops/files/xxx/image_1_8.jpg, /data/data/com.threepi.icheops/files/xxx/image_1_9.jpg, /data/data/com.threepi.icheops/files/xxx/image_1_10.jpg, /data/data/com.threepi.icheops/files/xxx/image_1_11.jpg

any ideas how to do this.

FlaMM3R
  • 67
  • 3
  • 13
  • implement Comparator interface and implement/use compare() method.. Put your sorting logic inside the compare() method.. this is happening because the names are being sorted alphabetically... so 10 comes earlies than 2... – TheLostMind Dec 27 '13 at 11:53
  • it seams like an alphabetic sort, try this http://stackoverflow.com/questions/11176227/simple-way-to-sort-strings-in-the-alphabetical-order and http://stackoverflow.com/questions/14475556/how-to-sort-arraylist-of-objects – TootsieRockNRoll Dec 27 '13 at 11:54

3 Answers3

1

here's an idea.. implement Comparator interface and implement/use compare() method. In your compare method split the strings based on "_" ... In arr[2] you will get 0,1,2... 10,11.. now parse these as integers using int i= Integer.parseInt(arr[2]).. and sort your Strings based on those integer values...

TheLostMind
  • 35,966
  • 12
  • 68
  • 104
0

you can use CustomComparator

public class CustomComparator implements Comparator<MyObject> {
    @Override
    public int compare(MyObject o1, MyObject o2) {
        return o1.getStartDate().compareTo(o2.getStartDate());
    }
}

and then after use

Collections.sort(arrayList, new CustomComparator());
Praveen Sharma
  • 4,326
  • 5
  • 25
  • 45
-1

Yo should try to rename the files putting the next names because when you sort a String it's different to a number:

/data/data/com.threepi.icheops/files/xxx/image_1_00.jpg, /data/data/com.threepi.icheops/files/xxx/image_1_01.jpg, /data/data/com.threepi.icheops/files/xxx/image_1_02.jpg, /data/data/com.threepi.icheops/files/xxx/image_1_03.jpg, /data/data/com.threepi.icheops/files/xxx/image_1_04.jpg, /data/data/com.threepi.icheops/files/xxx/image_1_05.jpg, /data/data/com.threepi.icheops/files/xxx/image_1_06.jpg, /data/data/com.threepi.icheops/files/xxx/image_1_07.jpg, /data/data/com.threepi.icheops/files/xxx/image_1_08.jpg, /data/data/com.threepi.icheops/files/xxx/image_1_09.jpg, /data/data/com.threepi.icheops/files/xxx/image_1_10.jpg, /data/data/com.threepi.icheops/files/xxx/image_1_11.jpg

  • If He is doing a alphabetical sort it's an explanation what is getting this result. Obviously there are another options to solve this problem. – ikki_fenix Dec 27 '13 at 12:00