使用Collections.sort排序列表时出错

时间:2010-12-08 10:01:07

标签: java list collections

当我尝试通过执行Collections.sort(list2)对列表进行排序时,我得到NullPointerException

该列表包含以下字符串

  

[BOOTH 4,ENP ROOM,BOOTH 6,C& T.   等候区,C& T等候区,C& T.   等候区,展位10,展位7,展位   3,BOOTH 1,C& T Waiting Area,C& T.   等候区,C& T等候区,C& T.   等候区,摊位1,C& T等待   面积,C& T等候区,C& T等待   面积,C& T等候区,C& T等待   面积,C& T等候区,C& T等待   面积,C& T等候区,C& T等待   面积,摊位10,C& T等候区,C& T.   等候区,C& T等候区,C& T.   等候区,C& T等候区,C& T.   等候区,C& T等候区,null,   null,null,null,null,null,null,   null,null,null,null,null,null,   null,null,null,null]

我是否需要在此列表中使用比较器?

3 个答案:

答案 0 :(得分:4)

您可以使用可以处理空值的比较器。 E.g。

private static final class NullsFirstComparator implements Comparator<String> {
  public int compare(String lhs, String rhs) {
    if (lhs == rhs)
      return 0;
    if (lhs == null)
      return -1;
    if (rhs == null)
      return 1;
    return lhs.compareTo(rhs);
  }
}

首先会对空值进行排序(它们比所有内容都小)

答案 1 :(得分:2)

排序前删除null值。它们无法排序

答案 2 :(得分:1)

您还可以在Apache commons中使用NullComparatorIt为编写比较器

提供了许多有用的实用工具