java - 可以数组。 sort 对已添加到数组中的枚举进行排序。?

标签 java arrays enums

我有一个包含牌组等级的枚举。我将这些排名添加到一个数组中。当我使用 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) ,您必须自己处理 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
    }
});

关于java - 可以数组。 sort 对已添加到数组中的枚举进行排序。?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27135177/

相关文章:

c - 定义C中用于存储的枚举的数据类型

java - Rcp 与 eclipselink 启用动态编织

java - 无法点击复选框

java - Java 中的分层枚举

php - 如何在php中获取内部数组元素的最大值

php - array_unique 不删除重复值 php

ios - 枚举类型的开关大小写

java - 在 Java 中将字符串传递给日期

java - 模式方法匹配返回 false

python - 来自任意级别嵌套字典的 numpy 结构化数组