Может Массивы. сортировать сортировки перечисления, которые были добавлены в массив.

1

У меня есть перечисление с рангом колоды. Я добавляю эти ряды в массив. Когда я использовал Arrays.sort для сортировки массива с помощью пользовательского компаратора, он не сортировал, а возвращал это:

Exception in thread "main" java.lang.NullPointerException at java.util.ComparableTimSort.countRunAndMakeAscending(ComparableTimSort.java:291)
    at java.util.ComparableTimSort.sort(ComparableTimSort.java:171)
    at java.util.ComparableTimSort.sort(ComparableTimSort.java:146)
    at java.util.Arrays.sort(Arrays.java:472)
    at HW3.Deck.sort(Deck.java:69)
    at HW3.War.main(War.java:100)
Java Result: 1

Какие-либо предложения? благодаря

Ниже приведен код:

@Override
'   public int compareTo(PlayingCard o) {
    if (this==o) return 0;
    if(this.getSuit()!=o.getSuit()){
        return this.suit.compareTo(o.getSuit());
    }

     else {
         return this.rank.compareTo(o.getRank());
     }   
}
  • 2
    Вы можете опубликовать свой код?
  • 0
    Похоже, в массиве был нулевой элемент?
Показать ещё 1 комментарий
Теги:
arrays
enums

1 ответ

0
Лучший ответ

Если вы используете Arrays.sort(T [], Comparator), вам придется самостоятельно заботиться о нулевых значениях.

пример

Arrays.sort(enums, new Comparator<Rank>>() {
    @Override
    public int compare(Rank o1, Rank o2) {
        if (o1 == o2) {
            return 0;
        }

        // Put NULL to the end.
        if (o1 == null) {
            return 1;
        }
        if (o2 == null) {
            return -1;
        }

        return o1.compareTo(o2); // sort by ordinal
    }
});
  • 0
    Спасибо за совет. кажется, я сравнил это неправильно, когда я неправильно реализовал CompareTo.
  • 0
    @NickSpirit: Если это помогло, вы можете нажать на галочку рядом с ответом, чтобы пометить этот вопрос как решенный.
Показать ещё 2 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню