最后一个选择对我很有吸引力。比较器非常好地链接在一起。特别是,您可能希望同时编写
ReverseComparator和
NullWrappingComparator。
编辑:您不必自己编写。如果您查看Google收藏库中的Ordering类,您会发现它以及其他各种好东西:)
编辑:进入更多细节以显示我的意思
ReverseComparator…
一个警告的词-在a的实现中
ReverseComparator,颠倒参数的顺序,而不是求反,否则
Integer.MIN_VALUE将“颠倒”自身。
所以这个实现是错误的(假设
original比较器要反向):
public int compare(T x, T y){ return -original.compare(x, y);}
但这是正确的:
public int compare(T x, T y){ return original.compare(y, x);}
原因是,我们总是希望扭转比较,但如果
original.compare(x, y)回报率
int.MIN_VALUE,那么坏的比较器将 还
回
int.MIN_VALUE,这是不正确。这是由于那个有趣的特性
int.MIN_VALUE == -int.MIN_VALUE。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)