栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

java.lang.IllegalArgumentException:比较方法违反了它的一般约定。

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

java.lang.IllegalArgumentException:比较方法违反了它的一般约定。

您的

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()

所以,

  1. A
    B
    返回
    0
    ,因为外部
    if
    条件为
    false
    =>
    A == B
  2. B
    C
    返回
    0
    ,因为外部
    if
    条件为
    false
    =>
    B == C

但是,

A
C
可以根据块内的测试返回
-1
或。因此,。这违反了传递原则。
1``if``A != C

我认为,您应该在

else
块内添加一些条件,该条件类似于块内的执行检查
if



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/449624.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号