实施比较方法的规则

2023-12-22

像compareTo一样,必须是“自反,反对称和传递”,有什么规则来实现compare方法吗? 谢谢


From 比较器API http://docs.oracle.com/javase/6/docs/api/java/util/Comparator.html#compare%28T,%20T%29:

  1. 实现者必须确保对于所有 x 和 y sgn(compare(x, y)) == -sgn(compare(y, x))。 (这意味着当且仅当 Compare(y, x) 抛出异常时,compare(x, y) 必须抛出异常 例外。)
  2. 实现者还必须确保关系是传递的:((compare(x, y)>0) && (compare(y, z)>0)) 意味着compare(x, z)>0。
  3. 最后,实现者必须确保compare(x, y)==0意味着对于所有z来说sgn(compare(x, z))==sgn(compare(y, z))。
  4. 一般情况是这样,但并不严格要求 (compare(x, y)==0) == (x.equals(y))。一般来说,任何 违反此条件的比较器应明确指出这一点 事实。推荐的语言是“注意:该比较器强加 与 equals 不一致的顺序。”
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

实施比较方法的规则 的相关文章

随机推荐

  • 如何放弃 LuaJ 协程 LuaThread?

    我正在尝试一种游戏机制 玩家可以在游戏计算机上运行脚本 脚本执行在游戏级别上将受到资源限制 每次更新只能执行一定数量的指令 以下概念验证演示了基本级别的沙箱和任意用户代码的限制 它成功运行了约 250 条精心设计的 用户输入 指令 然后丢弃
  • 清除网站数据相当于 Javascript 吗?

    我希望在 Javascript 函数中具有与 清除站点数据 相同的行为 因为我的 Angular 应用程序 升级 Angular 后 似乎在不清除站点数据的情况下行为不当 而且我不希望客户被迫自己清除站点数据 如果不可能清理所有内容 是否至
  • PHP MySQL 选择随机行

    我在随机选择 6 个朋友时遇到问题 这是我到目前为止收到的查询 result num rows SELECT FROM friends WHERE member id SESSION userid if result gt 6 f num
  • 远程服务器返回错误 (403) 禁止

    我在下载文件时遇到问题 链接如下 http vsbg023 cda pl apple 13801451161599 mp4 st zFHkNA18rmxan4AvOQWRmw e 1431286721 这只是一个例子 一旦 WebClien
  • 无效的匿名类型成员声明符

    我对以下代码有问题 根据这个 MSDN 论坛帖子 https social msdn microsoft com Forums en US 3b13432a 861e 45f0 8c25 4d54622fbfb4 linq group an
  • angular-cli 新项目中的 webpack.config.js 在哪里?

    我正在研究 webpack 和 Angular cli 尽管 Angular cli 应该使用 webpack 但我看不到任何webpack config js当我使用以下命令创建新项目时的文件ng new 有谁知道这在 Angular C
  • ggplot2 中有没有内置的方法可以进行对数色标?

    以下是分箱密度图的示例 library ggplot2 n lt 1e5 df lt data frame x rexp n y rexp n p lt ggplot df aes x x y y stat binhex print p 调
  • 如何在 ASP.NET MVC 4 中忽略特定视图文件夹或特定 cshtml 文件的路由

    我想在浏览 Views 文件夹中的特定页面时忽略路由 但我尝试使用以下方法未成功 routes RouteExistingFiles false routes IgnoreRoute Views NoMove specificPage cs
  • 您能详细介绍一下 VS 2010 中的具体属性吗?

    我知道您可以进入每个属性 也可以不进入每个属性 但我真的很希望能够进入特定的属性 而不是其余的 这可能吗 我也知道我可以使用键盘命令 但我问是否有更永久的解决方案 我有很多属性 并且我的 setter 做了重要的事情 所以跳过它们是愚蠢的
  • 何时使用递归互斥体?

    我了解递归互斥体允许互斥体被锁定多次而不会陷入死锁 并且应该解锁相同的次数 但在什么特定情况下需要使用递归互斥锁呢 我正在寻找设计 代码级别的情况 例如 当您有递归调用它的函数 并且您希望同步访问它时 void foo mutex acqu
  • EnumProcessModules 在 32 位 win7 上失败并出现错误 299

    我的代码在win7 32位上运行 但是当我使用EnumProcessModules 它返回 false 并且 getlasterror 返回错误代码 299 这声明该程序是 32 位的 该语句不能在 64 位系统上运行 我想知道为什么会发生
  • 新标签页中的 javascript window.location

    我通过以下方式将用户转移到某个网址window location但此网址会在浏览器的同一选项卡中打开 我希望它在新选项卡中打开 我可以使用 window location 这样做吗 还有其他方法可以执行此操作吗 window open ht
  • guava:将列表转换为以索引为键的映射

    在我的应用程序中 我有一个列表名称 我希望根据索引值将其转换为地图 例如 List
  • android:从模拟器中删除多点触摸

    今天我做了以下一组更新 将我的 Android Studio 从 2 0 预览版 4 更新为2 0 preview 5 将我的 Android SDK 工具更新为25 0 2 rc3 将我的 Android 6 0 Google API I
  • Knockout.Js 无法检测以编程方式更改的复选框状态

    我有一个简单的复选框 其值通过我正在编写的一些基础设施进行调整 以便在 localStorage 中保留状态 我知道这通常是通过设置 viewModel 来完成的 但是基础设施不知道任何淘汰绑定 也无法访问它们 我不认为这会是一个问题 因为
  • 如何将一个宝石的资产包含在另一个宝石中?

    我正在构建一个 gem Rails 引擎 让我们称之为它my new gem 以及里面my new gem我正在尝试包含来自另一个 gem 的 JavaScript 资产 让我们称之为它the other gem In the gemspe
  • 致命异常:java.lang.NoSuchMethodError:没有静态方法 isDeviceProtectedStorage

    使用时科尔多瓦插件 firebase https github com arnesson cordova plugin firebase 我遇到了以下错误 04 27 16 59 35 745 6859 6859 E AndroidRunt
  • Delphi无法加载包找不到指定的模块

    德尔福10 3 Windows 10 我正在尝试安装 Advantage 数据库的 TDataSet 组件 我已经将它安装到我的笔记本电脑上 没有任何问题 笔记本电脑具有相同的系统 在我的桌面上 我收到错误 无法加载包 找不到指定的模块 我
  • transactions/spring 事务传播会解决这个并发问题吗?

    如果可以的话 我有几个关于 Spring 事务的问题 假设我有这个 DAO 类 public class MyDAO verifies if a certain record in DB contains True in a certain
  • 实施比较方法的规则

    像compareTo一样 必须是 自反 反对称和传递 有什么规则来实现compare方法吗 谢谢 From 比较器API http docs oracle com javase 6 docs api java util Comparator