繁体   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