比较违反其总合同[关闭]

问题描述 投票:0回答:0

我必须实现一个排序算法。主要目标是对主要具有三个属性的文件进行排序。

Class File {
Private string filename;
Private boolean isInternal;
Private int id;
}

排序应按照以下规则进行:

  • 如果文件的 isInternal 等于 true -> 然后根据 'id' 属性按升序排序
  • 否则根据文件名按字母顺序排序

我开发的排序只是一个比较器

If (f1.isInternal && f2.isInternal)
Return f1.id - f2.id

Return f1.filename.compareTo(f2.filenane)

这抛出一个异常“Comparison violates its general contract”

有人可以帮我吗? 谢谢

不违反传递性的排序算法

java comparator
© www.soinside.com 2019 - 2024. All rights reserved.