11.考虑实现Comparable接口

    如果你正在编写一个值类,它具有非常明显的内在排序关系,那么应该考虑实现Comparable接口。依赖于比较关系的类包括有序集合类TreeSet和TreeMap,以及工具类Collections和Arrays,它们内部包含有搜索和排序算法。    

    ComparaTo方法的通用约定与equals方法的通用约定具有相似的特征(自反性,对称性,传递性,非空型)。当前这个对象与指定的对象进行顺序比较。当该对象小于、等于或大于指定对象的时候,分别返回一个负整数、零或者正整数。如果由于指定对象的类型而使得无法进行比较,则抛出ClassCastException异常。

    有一个强烈的建议,在进行相等测试的时候,最好保证equals和ComparaTo返回的结果一致。

    因为ComparaTo大于和小于的时候返回的正整数或负整数,并没有规定具体返回多少,但在改写这个方法时,一定要注意不要产生数值溢出,因为一个有符号的32位整数,还没有大到足以表达两个32位整数的差。例如,如果i是一个很大的正整数(int类型),而j是一个绝对值很大的负整数(int类型),那么(i-j)将会溢出,返回一个复制。所以我们要保证不要超过INTEGER.MAX_VALUE(2^31 - 1).

猜你喜欢

转载自blog.csdn.net/qq_27469549/article/details/80567496