Java中比较对象的更优雅的方式
Java有一个接口Java中比较对象的更优雅的方式,java,guava,apache-commons,Java,Guava,Apache Commons,Java有一个接口比较器,它有一个方法int compare(to1,t2) 编辑: 我错了: 如果第一个对象小于,则返回的整数必须是-1 第二个,1如果第二个小于第一个,0如果它们是 平等 文件说明: 负整数、零或正整数作为第一个参数 小于、等于或大于第二个 因此,我重新表述我的问题: 有没有比记住比较器更优雅的比较对象的方法。compare(o1,o2)
比较器
,它有一个方法int compare(to1,t2)
编辑:
我错了:
如果第一个对象小于,则返回的整数必须是-1
第二个,1
如果第二个小于第一个,0
如果它们是
平等
文件说明:
负整数、零或正整数作为第一个参数
小于、等于或大于第二个
因此,我重新表述我的问题:
有没有比记住比较器更优雅的比较对象的方法。compare(o1,o2)<0实际上意味着第一个对象小于第二个对象?比较你的陈述
如果第一个对象小于第二个对象,则返回的整数必须为-1;如果第二个对象小于第一个对象,则返回的整数必须为1;如果它们相等,则返回的整数必须为0
官方声明
返回负整数、零或正整数,因为第一个参数小于、等于或大于第二个参数
请注意,唯一合适的常数是零。比较您的陈述
如果第一个对象小于第二个对象,则返回的整数必须为-1;如果第二个对象小于第一个对象,则返回的整数必须为1;如果它们相等,则返回的整数必须为0
官方声明
返回负整数、零或正整数,因为第一个参数小于、等于或大于第二个参数
请注意,唯一合适的常数是零。比较法的官方接口合同是: 返回负整数、零或正整数作为第一个 参数小于、等于或大于第二个参数 事实上,您只需要三个值,这个逻辑可以用来编写优雅的代码,如下所示:
public int compare(MyObject o1, MyObject o2){
return o1.getIntValue() - o2.getIntValue();
}
在一行中,它不仅给出了哪个物体更大(或相等),甚至给出了一个物体比另一个物体大多少
(不考虑整数溢出。)比较方法的官方接口合同为: 返回负整数、零或正整数作为第一个 参数小于、等于或大于第二个参数 事实上,您只需要三个值,这个逻辑可以用来编写优雅的代码,如下所示:
public int compare(MyObject o1, MyObject o2){
return o1.getIntValue() - o2.getIntValue();
}
在一行中,它不仅给出了哪个物体更大(或相等),甚至给出了一个物体比另一个物体大多少
(不考虑整数溢出。)三个常数的问题。你不能在任何Util文件中声明它们吗?为什么你不自己声明它们呢?你可以使用Guava的。如果是不相等的整数,返回值既不是1也不是-1。返回值为正数或负数。没有“正数”或“负”的常数……问题是合理的。“幻数”-1,0,1应该在Java标准库中的某个地方定义,但它们似乎不是。关于3个常量。你不能在任何Util文件中声明它们吗?为什么你不自己声明它们呢?你可以使用Guava的。如果是不相等的整数,返回值既不是1也不是-1。返回值为正数或负数。“正数”和“负数”中没有常数……这个问题是有道理的。“幻数”-1,0,1应该在Java标准库中的某个地方定义,但它们似乎不是。Java提供了
Integer。比较,因此用户不再需要进行此操作。还要注意,OP是比较对象,而不是整数。它不优雅,因为它有缺陷。你写的是马车,但这并没有让它变得更好。你永远不可能知道这样一个方法调用的是什么值,所以你最好避免溢出,特别是在这么简单的情况下。Java提供了Integer。比较,这样用户就再也不需要这样做了。还要注意,OP是比较对象,而不是整数。它不优雅,因为它有缺陷。你写的是马车,但这并没有让它变得更好。你永远不可能知道这样一个方法调用的是什么值,所以你最好避免溢出,特别是当它这么简单的时候。