Вставка сортировки по списку, сортировка номеров по возрастанию и по алфавиту - PullRequest
0 голосов
/ 13 января 2020

Итак, у меня есть список собак, которых я хочу отсортировать по длине хвоста, а также по именам в алфавитном порядке. Я могу заставить его сортировать по именам длиной или , но мне не удается получить их обоих. Вот мой код:

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 в отдельном классе. Наконец, я начинающий программист, поэтому, пожалуйста, прости меня (но исправь меня!) за любые глупые ошибки.

...