Итак, у меня есть список собак, которых я хочу отсортировать по длине хвоста, а также по именам в алфавитном порядке. Я могу заставить его сортировать по именам длиной или , но мне не удается получить их обоих. Вот мой код:
import java.util.*;
public class DogSorter {
public void sort(ArrayList<Dog> dogs) {
for(int i =1; i < dogs.size(); i++) {
Dog current = dogs.get(i);
int j = i-1;
while ((j > -1 ) && ((dogs.get(j).compareTailLengthTo(current)) == 1)) {
dogs.set(j+1, dogs.get(j));
j--;
}
dogs.set(j+1, current);
}
}
}
В классе собак:
public double compareTailLengthTo(Dog dog) {
int res = 0;
if (this.tailLength < dog.getTailLength()) {
res = -1;
}
if (this.tailLength > dog.getTailLength()) {
res = 1;
}
return res;
}
То, что я пробовал для сортировки имен (также в классе собак):
@Override
public int compareTo(Dog other) {
int compareInt = this.name.compareToIgnoreCase(other.name);
if(compareInt < 0) {return -1;}
if (compareInt > 0 ) {return 1;}
return 0;
}
I попытался просто заменить .compareTailLengthTo на .compareTo в моем методе сортировки, просто чтобы посмотреть, будет ли он работать самостоятельно, что и сделал. Затем я попытался проверить оба, просто добавив еще один && - check после .compareTailLengthTo, но тогда сработала бы только последняя проверка. (Engli sh не мой родной язык, поэтому я надеюсь, что мое объяснение здесь имеет смысл, извинения, если это не так).
Итак, после этой стены текста, я думаю, мой вопрос: как мне сортировать несколько вещей, используя сортировку вставками?
(Я прошу прощения, если этот вопрос уже задавался. Я искал часы и не нашел ответа, поэтому я надеюсь, что это не так. Я также хотел бы отметить (в случае, если это имеет значение), что это школьное задание, и я ограничен сортировкой вставок, и я у меня должен быть метод sort в отдельном классе. Наконец, я начинающий программист, поэтому, пожалуйста, прости меня (но исправь меня!) за любые глупые ошибки.