|
1
37
我想您可以使用一个小的静态方法将对字段compareTo方法的调用包装起来,以对null进行高或低排序:
简单用法(多个字段与正常情况相同):
|
|
|
2
8
谢谢你的回复!通用方法和谷歌比较器看起来很有趣。 NullComparator 在 Apache Commons Collections (我们目前正在使用):
|
|
|
3
6
这取决于您是否考虑空项是一个值得比较的有效字符串值。为空<或>“苹果”。我唯一可以肯定的是null==null。如果您可以定义null在排序中的位置,那么您可以适当地编写代码。 在这种情况下,我可能会选择抛出一个NullPointerException或IllegalArgumentException,并尝试在更高级别上处理null,方法是首先不将其放在比较中。 |
|
4
3
这里的关键问题是确定如何处理null。有些选项是:a)假设null位于排序顺序中的所有其他对象之前b)假设null位于排序顺序中的所有其他对象之后c)将null视为等同于某些默认值d)将null视为错误条件。您选择哪一个将完全取决于您正在使用的应用程序。 当然,在最后一种情况下,您会抛出一个异常。对于其他情况,您需要一个四向if/else案例(大约三分钟的编码时间,您已经计算出您想要的结果)。 |
|
|
5
3
如果您使用的是Google collections,您可能会发现 Comparators 上课很有帮助。If具有用于将null排序为集合中最大或最小元素的帮助器方法。你可以用 compound comparators |
|
|
6
3
还有这个班
这将打印:
|
|
|
7
3
您可以为它编写比较器。假设您有一个字符串名为private字段的类Person。方法来访问字段名。下面是班级人员的比较表。
从Java8开始,您可以使用下面的API作为列表。
|
|
|
8
2
将客户视为POJO。我的答案是:
或
|
|
|
9
1
您不应该像使用NullComparator那样使用它-您正在为每个比较操作创建一个新的类实例,例如,如果您正在对一个包含1000个条目的列表进行排序,那么这将是1000*log2(1000)个完全多余的对象。这很快就会产生问题。 要么将其子类化,要么将其委托给它,要么只是实现自己的空检查——其实并没有那么复杂:
|
|
|
10
0
我认为早期返回声明将是许多ifs的另一种选择 例如
|
|
|
saber · MySql查询没有结果 4 年前 |
|
pigfox · Mysql空表联接失败 8 年前 |
|
|
Jaa Zaib · 返回空值的大小写表达式 8 年前 |
|
|
Robert Vogelezang · 为什么null未写入输出窗口? 8 年前 |
|
|
l. schwarz · sql长度(null) 8 年前 |
|
|
ÇAÄrı Keskin · SQL-删除(消除)没有数据的列 8 年前 |
|
|
Dorkymon · 使用系统在输出处获取null。出来打印F 8 年前 |