可以阵列。排序已添加到数组的排序枚举。?

时间:2014-11-25 19:35:54

标签: java arrays enums

我有一个甲板等级的枚举。我将这些Ranks添加到一个数组中。当我使用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());
     }   
}

1 个答案:

答案 0 :(得分:0)

如果您使用Arrays.sort(T[], Comparator),则必须自行处理 null 值。

示例

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
    }
});