简体   繁体   English

使用Collections.sort的错误排序列表

[英]Error sorting list using Collections.sort

I'm getting a NullPointerException when i try to sort a list with by doing the Collections.sort(list2) 当我尝试通过执行Collections.sort(list2)对列表进行排序时,出现NullPointerException

the list contains the following strings 该列表包含以下字符串

[BOOTH 4, ENP ROOM, BOOTH 6, C&T Waiting Area, C&T Waiting Area, C&T Waiting Area, BOOTH 10, BOOTH 7, BOOTH 3, BOOTH 1, C&T Waiting Area, C&T Waiting Area, C&T Waiting Area, C&T Waiting Area, BOOTH 1, C&T Waiting Area, C&T Waiting Area, C&T Waiting Area, C&T Waiting Area, C&T Waiting Area, C&T Waiting Area, C&T Waiting Area, C&T Waiting Area, C&T Waiting Area, BOOTH 10, C&T Waiting Area, C&T Waiting Area, C&T Waiting Area, C&T Waiting Area, C&T Waiting Area, C&T Waiting Area, C&T Waiting Area, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null] [BOOTH 4,ENP ROOM,BOOTH 6,C&T等候区,C&T等候区,C&T等候区,BOOTH 10,BOOTH 7,BOOTH 3,BOOTH 1,C&T等候区,C&T等候区,C&T等候区,C&T等候区, BOOTH 1,C&T等候区,C&T等候区,C&T等候区,C&T等候区,C&T等候区,C&T等候区,C&T等候区,C&T等候区,C&T等候区,BOOTH 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]

Do i need to use comparator for this list? 我需要为此列表使用比较器吗?

You could use a comparator that can handle null values. 您可以使用可以处理空值的比较器。 Eg 例如

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);
  }
}

Which will sort the null values first (they are less than everything) 它将首先对空值进行排序(它们小于所有值)

Remove null values before sorting. 排序前删除null值。 They can't be sorted 无法排序

You can also use NullComparator in Apache commons. 您还可以在Apache Commons中使用NullComparator It provide lot of useful utilities for writing comparator 为编写比较器提供了许多有用的工具

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM