在列(数量)中,我有一些类型为double和N / A的值。如何使用Comparator对它们进行排序?

时间:2012-09-07 04:54:23

标签: java

在一列(数量)中,我有一些类型为double和N / A的值。

在我的比较器类比较方法中,这是下面提到的编码

   if(double1 == double2) {
        return 0;
    }

    // We know that both aren't null, so if only long 2 is null, 1 > 2
    if(double2 == null) {
        return 1;
    }

    // We know that both aren't null, so if only long 1 is null, 1 < 2
    if(double1 == null) {
        return -1;
    }

    // Nulls are handled, use the native compare
    return double1.compareTo(double2);

double1和double2的类型为Double。

它给出了异常:java.lang.NumberFormatException:对于输入字符串:“N / A”。

请给我解决方案。

1 个答案:

答案 0 :(得分:0)

这是我的猜测(如果没有看到你如何使用这些双打,我真的不能说)你想要保留一个实际上并不存在的值,以及可能的值。

为此,我会说你用Double.NaN构建Double,如下:

Double double1 = new Double(Double.NaN);

我不确定是否为排序操作定义了NaN - 它没有复杂的顺序,因为它不是一个数字。您可能希望使用辅助结构(例如List<Double>)来首先梳理不是数字的Double,并将它们放在第一位。然后,您可以对剩余的Double进行排序。