[英]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.