Collections.sort比较2个对象抛出空指针异常

时间:2015-07-12 05:35:41

标签: java sorting

我正在使用collections.sort方法int比较比较2个对象的距离参数,并按照距离按升序对它们进行排序。 这是我正在做的比较它

Collections.sort(venuesList, new Comparator<FoursquareVenue>() {

                @Override
                public int compare(FoursquareVenue lhs, FoursquareVenue rhs) {                  


                    return lhs.getDistance().compareTo(rhs.getDistance());  
                }
            });

我认为我只想做一些小傻事,但我无法弄清楚问题是什么 错误说的是这样的

07-12 14:52:51.018: E/AndroidRuntime(1377): FATAL EXCEPTION: main
07-12 14:52:51.018: E/AndroidRuntime(1377): java.lang.NullPointerException:println needs a message
07-12 14:52:51.018: E/AndroidRuntime(1377): at android.util.Log.println_native(Native Method)
07-12 14:52:51.018: E/AndroidRuntime(1377): atandroid.util.Log.v(Log.java:117)

我想我需要处理对象的空值,但我不知道我该怎么做?

1 个答案:

答案 0 :(得分:1)

Log.v(...)的第二个参数必须是String,而getDistance()方法可能会返回null

为防止异常,您可以执行以下操作:

if (lhs != null && rhs != null && lhs.getDistance() != null && rhs.getDistance() != null) {
    Log.v("lhs Distance", lhs.getDistance());
    Log.v("rhs Distance", rhs.getDistance());
    return lhs.getDistance().compareTo(rhs.getDistance());
} else {
    return -1;
}