簡體   English   中英

以升序對包含空值的數組進行排序

[英]Sorting an array in ascending order that contains null values

我需要對包含null值的數組進行排序,null值表示我已設置為null的無效數據,但是由於它們表示無效數據而不能從數組中簡單刪除。null值必須保留在適當的位置,即對所有數據進行排序除null值外的其他值引發的錯誤是對Arrays.sort()的調用上的NullPointerException。

     public static double getMedian(Double[] values) {
     Double[] copy = Arrays.copyOf(values, values.length);
     Arrays.sort(copy);
     double median;
     if (copy.length % 2 == 0)
        median = (copy[copy.length / 2] + copy[copy.length / 2 - 1]) / 2;
     else
        median = copy[copy.length / 2];
     return median;
}

非常感謝所有幫助和/或建議。

添加一個比較器,然后返回適當的符號,以表示小於,等於或大於。 例如:

class MyComparator<Double> implements Comparator {
    // change value to -1 to inverse sort direction.
    var direction = 1;

    public int compare(Double o1, Double o2) {
        int sign = 0;
        if (o1 == null) {
           sign = -1;
        } else if (o2 == null) {
           sign = +1;
        } else {
           sign = o1.compareTo(o2);
        }       
        return sign * direction;
    }

}

Arrays.sort(copy, new MyComparator());

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM