У меня возникли проблемы с составлением кода, который я написал. Код предназначен для сортировки массива каталогов, а затем возврата отсортированного массива. Массивы передаются в программу выглядеть следующим образом: {"/","/usr/","/usr/local/","/usr/local/bin/","/games/","/games/snake/","/homework/","/temp/downloads/"}
Java Embedded Comparator Class
Отсортированного ответ на это было бы:
{ "/", "/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() мой метод сравнения modifiend?
Спасибо большое, Junaid
Привет. Поэтому я запустил его снова и сейчас, код просто сортируется по алфавиту, а не по глубине каталога. Глубина директории должна быть первым критерием, используемым для сортировки массива. Что-то не так с моим методом компаратора? – user2904796
Реализация метода компаратора выглядит неплохо. Вышеуказанный метод дает мне правильный результат. Полученный массив дает это / /игры/ /домашние задания/ /USR/ /игры/змея/ /темп/загрузки/ /USR/местные/ /USR/местные/бен / –