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

具有空值的比较器

艾骏
2023-03-14
问题内容

我们有一些代码根据其坐标之间的距离对地址列表进行排序。这是通过使用自定义比较器的collections.sort完成的。

但是,列表中有时不包含地址,这会导致NullPointerException。解决这个问题的最初想法是让比较器返回至少0个坐标为零的地址的距离。我担心这可能导致列表中“有效”元素的顺序损坏。

因此是否可以在比较器中为空数据返回“ 0”值,还是有一种更干净的方法来解决此问题?


问题答案:

处理它null意味着无限远。从而:

  • comp(1234, null) == -1
  • comp(null, null) == 0
  • comp(null, 1234) == 1

这样,您将获得一致的订购。



 类似资料:
  • 问题内容: 我在MySQL表中有一个名为CODE的列,该列可以为NULL。假设我有一些带有CODE =’C’的行,我想在选择的结果集中忽略它们。我的结果集中可以有CODE = NULL或CODE!=’C’。 以下查询不返回CODE为NULL的行: 但是此查询按预期工作,我知道这是正确的方法。 我的问题是为什么只有CODE!=’C’不会返回CODE = NULL的行?绝对“ C”不是NULL。我们在

  • 问题内容: 首先采取klurudge解决方案,使用哨兵方法(必须让您的程序不允许输入哨兵值): 假设您忘记了阻止程序中的哨兵值,用户在B字段中输入了-2147483648,而A为空。上面的代码报告为true,应报告为false,不应报告为true或null。 比较可为空字段上的相等性的最简洁方法是什么?A == B仅应报告true或false,而不管该字段是否可为空。 问题答案: 也许IS [NO

  • 我们知道,在数学中有很多用于比较大小的运算符。 在 JavaScript 中,它们的编写方式如下: 大于 / 小于:a > b,a < b。 大于等于 / 小于等于:a >= b,a <= b。 检查两个值的相等:a == b,请注意双等号 == 表示相等性检查,而单等号 a = b 表示赋值。 检查两个值不相等。不相等在数学中的符号是 ≠,但在 JavaScript 中写成 a != b。 在本

  • 我对在Java中实现一个特殊的优先级队列变体很感兴趣,我希望这个优先级队列能够与泛型类型一起工作。在Java的集合对象中,存储具有某种排序的对象(例如PriorityQueue、TreeSet等),可以使用实现Compariable的类以及不一定实现Compariable的类,因为类的比较器传递给构造函数。 如何在优先级队列类中实现此功能?如果给我一个比较器,我是否必须根据类是否实现Compara

  • 介绍 在JDK提供的比较器中,对于null的比较没有考虑,Hutool封装了相关比较,可选null是按照最大值还是最小值对待。 // 当isNullGreater为true时,null始终最大,此处返回的compare > 0 int compare = CompareUtil.compare(null, "a", true); // 当isNullGreater为false时,null始终最小