Arrays.sort does not sort by your comparator directly except you call. You should use
Arrays.sort(dirs, new APTComp());
The revised code:
import java.util.Arrays;
import java.util.Comparator;
public class Main {
class APTComp implements Comparator<String> {
public int compare(String a, String b) {
String[] d1 = a.split("/");
String[] d2 = b.split("/");
int diff = d1.length - d2.length;
if (diff != 0) {
return diff;
} //{"/","/usr/","/usr/local/","/usr/local/bin/","/games/","/games/snake/","/homework/","/temp/downloads/"}
return a.compareTo(b);
}
}
public String[] sort(String[] dirs) {
Arrays.sort(dirs, new APTComp());
return dirs;
}
public static void main(String[] args) {
Main main = new Main();
String[] result = main.sort(new String[] {"/","/usr/","/usr/local/","/usr/local/bin/","/games/","/games/snake/","/homework/","/temp/downloads/"});
for(int i=0; i<result.length; i++) {
System.out.println(i + ": " + result[i]);
}
}
}
Result:
0: /
1: /games/
2: /homework/
3: /usr/
4: /games/snake/
5: /temp/downloads/
6: /usr/local/
7: /usr/local/bin/
See another example