当前位置: 首页 > 面试题库 >

使用Java集合排序时如何处理null

薛欣德
2023-03-14
问题内容

在Java中使用Collection.sort时,如果内部对象之一为null,应该返回什么?

例:

Collections.sort(list, new Comparator<MyBean>() {
    public int compare(MyBean o1, MyBean o2) {
      return o2.getDate().compareTo(o1.getDate());
     }

});

可以说o2不是null,但o2.getDate()是,因此添加null验证时我应该返回1还是-1或0?


问题答案:

自然,这是您的选择。无论您编写什么逻辑,它都会定义排序规则。因此,“应该”在这里并不是正确的词。

如果您希望null出现在任何其他元素之前,则可以这样做

public int compare(MyBean o1, MyBean o2) {
    if (o1.getDate() == null) {
        return (o2.getDate() == null) ? 0 : -1;
    }
    if (o2.getDate() == null) {
        return 1;
    }
    return o2.getDate().compareTo(o1.getDate());
}


 类似资料:
  • 问题内容: 我有一个Java集合: 现在在显示列表之前有一个字段,我想按此排序此集合。 有什么办法可以做到吗? 问题答案: 使用比较器: 此外,如果实现,则只需使用 使用JDK 8,语法要简单得多。 更简单 最简单的 显然,初始代码也可以用于JDK 8。

  • 主要内容:1 集合元素的排序,2 Collections sort方法,3 字符串正序排序,4 字符串倒序排序,5 包装类型排序,6 自定义对象排序1 集合元素的排序 我们可以对以下元素进行排序: 字符串对象 包装类对象 用户自定义对象 Collections类提供用于对集合的元素进行排序的静态方法。如果集合元素为Set类型,则可以使用TreeSet。但是,我们无法对List的元素进行排序。Collections类提供用于对List类型元素的元素进行排序的方法。 2 Collections so

  • 问题内容: 我是Java的初学者。请建议可以/应该使用哪些集合来维护Java中的排序列表。我尝试了和,但它们不是我想要的。 问题答案: 这来得很晚,但是JDK中有一个类只是为了获得排序列表。它被命名(与其他Sorted*接口有些混乱)“ ”。它可以排序或使用Comparator。 与 sorted using 的区别在于,通过使用堆数据结构,这将始终保持部分顺序,具有O(log(n))插入性能,而

  • 下面我使用的代码工作正常,并输出名称,但排序方法不起作用。我需要“Collections.sort(nameFromText);”按名字的字母顺序对ArrayList排序。 我做错了什么?

  • 问题内容: 我在Redis商店中使用type。我为每个用户创建一个自己的 KEY 并将数据放在此处: KEY 示例 : 我想从Redis中为用户键选择数据:1、2、3,并按得分(时间戳)进行排序。 如果只是简单地看问题,我需要跨时从任何KEY中选择一个数据,然后将按分数排序的所有结果组合在一起。 问题答案: 有两种方法可以执行此操作,但是正确的方法取决于您要执行的操作。例如: 您可以在代码中为每个

  • 因此,我有实现comparable的类,但当我试图创建调用Collections.sort()的排序方法时,它给出了一个错误,说明我不能用ArrayList调用collection sort。有人能帮忙吗?并且帮助我使用compareTo方法,我仍然停留在如何比较ArrayList中的每个元素上