我在編譯一些我編寫的代碼時遇到了麻煩。該代碼旨在對目錄數組進行排序,然後返回已排序的數組。傳遞到程序的陣列是這樣的:{"/","/usr/","/usr/local/","/usr/local/bin/","/games/","/games/snake/","/homework/","/temp/downloads/"}
Java嵌入式比較器類
這樣做的有序的答案是:
{ "/", "/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()調用是否使用我的修改比較方法?
非常感謝, 朱奈德
嗨。所以我再次運行它,目前,代碼只是按字母順序排序,而不是目錄的深度。目錄的深度應該是用於排序數組的第一個標準。比較方法有問題嗎? – user2904796
您的比較器方法實現看起來不錯。以上方法給我正確的結果。它給人的合成陣列是 / /遊戲/ /功課/ 在/ usr/ /遊戲/蛇/ /溫度/下載/ 在/ usr /本地/ 在/ usr/local/bin目錄/ –