I've got a list of Folder objects, with getFolderName method (returns a String).
I'm trying to sort the list but I'm having an issue where the order is incorrect because some of the folder names starts with numeric values like:
- 1 Test
- 2 Test
- 3 Test
- 4 Test
- ...
- 9 Test
- 10 Test
- 11 Test
- 12 Test
Here is my code:
Collections.sort(folders, new Comparator<Folder>() {
@Override
public int compare(Folder folder1, Folder folder2) {
return Integer.compare(folder1.getFolderName(), folder2.getFolderName());
}
});
Current output:
- 1 Test
- 10 Test
- 11 Test
- 12 Test
- 2 Test
- 3 Test
- 4 Test
- ...
- 8 Test
- 9 Test
Expected output:
- 1 Test
- 2 Test
- 3 Test
- 4 Test
- ...
- 8 Test
- 9 Test
- 10 Test
- 11 Test
- 12 Test
What am I missing to sort the list correctly?
getFolderNamereturns a String, but in your code you use it asintpublic int compare(Folder folder1, Folder folder2) { Integer fn1 = Integer.parseInt(folder1.getFolderName()); Integer fn2 = Integer.parseInt(folder2.getFolderName()); return Integer.compare(fn1, fn2); }but I still get the same output. Can you help me please?