【发布时间】:2014-03-08 18:11:18
【问题描述】:
我在编译我编写的一些代码时遇到了问题。该代码旨在对目录数组进行排序,然后返回排序后的数组。传入程序的数组如下所示:{"/","/usr/","/usr/local/","/usr/local/bin/","/games/","/games/snake/","/homework/","/temp/downloads/"}
对此的排序答案是:
{ "/", "/games/", "/homework/", "/usr/", "/games/snake/",
"/temp/downloads/", "/usr/local/", "/usr/local/bin/" }
所以基本上,最浅的目录放在最前面。如果两个目录具有相同的深度,我们根据第一个单词按字母顺序排序。 到目前为止,我的代码是这样的:
import java.util.Arrays;
import java.util.Comparator;
public class Dirsort {
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);
return dirs;
}
}
你们能告诉我你们在这里发现了什么问题吗?我的 Arrays.sort() 调用是否使用了我的修改比较方法?
非常感谢, 朱奈德
【问题讨论】:
标签: java sorting comparator