您的
compare()方法 不是可 传递的 。如果
A == B和
B == C,则
A必须等于
C。
现在考虑这种情况:
对于
A,
B和
C,假设
containsKey()方法返回以下结果:
childMap.containsKey(A.getID())
退货true
childMap.containsKey(B.getID())
退货false
childMap.containsKey(C.getID())
退货true
另外,考虑订购
A.getId()!=
B.getId()。
所以,
A
并B
返回0
,因为外部if
条件为false
=>A == B
B
并C
返回0
,因为外部if
条件为false
=>B == C
但是,
A和
C可以根据块内的测试返回
-1或。因此,。这违反了传递原则。
1``if``A != C
我认为,您应该在
else块内添加一些条件,该条件类似于块内的执行检查
if。



