У меня есть перечисление с рангом колоды. Я добавляю эти ряды в массив. Когда я использовал 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()); } }
Если вы используете 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
}
});