gpt4 book ai didi

java - 按升序对包含空值的数组进行排序

转载 作者:行者123 更新时间:2023-12-01 10:01:37 25 4
gpt4 key购买 nike

我需要对包含空值的数组进行排序,空值表示我已设置为空的无效数据,但不能简单地从数组中删除,因为它们表示无效的数据空值必须保留在适当的位置,即对除空值之外的所有其他值进行排序调用 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());

关于java - 按升序对包含空值的数组进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36778614/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com