Java 双比较器Lambda表达式
如何转换此表达式:Java 双比较器Lambda表达式,java,lambda,integer,double,Java,Lambda,Integer,Double,如何转换此表达式:(i1,i2)->(int)i1-(int)i2 从int到double值 我试过:(i1,i2)->(double)i1-(double)i2,它错了 请帮忙。谢谢。这句话 (i1,i2)->(双)i1-(双)i2 还一双。 比较器必须返回一个整数。 一个解决方案可能是 (i1,i2)->(int)数学符号(i1-i2) 例如 列表l=列表of(3.4,9.3,5.54); l、 排序((i1,i2)->(int)Math.signum(i1-i2)) 注意 (i1,i2)-
(i1,i2)->(int)i1-(int)i2
从int到double值
我试过:(i1,i2)->(double)i1-(double)i2
,它错了
请帮忙。谢谢。这句话
(i1,i2)->(双)i1-(双)i2
还一双。
比较器必须返回一个整数。
一个解决方案可能是
(i1,i2)->(int)数学符号(i1-i2)
例如
列表l=列表of(3.4,9.3,5.54);
l、 排序((i1,i2)->(int)Math.signum(i1-i2))
注意
(i1,i2)->(int)(i1-i2)
因为小数字被舍入为零,所以不起作用。您理解比较器的含义吗? 这里的主要问题(对于数字,如double或int),是根据您决定的比较函数对两个元素(i1、i2)进行排序。 一旦您将返回一个正整数(常用的约定是返回“1”),这意味着第一个对象(i1)更大。一旦返回负值(约定为“-1”),则表示第二个对象(i2)更大。返回“0”后,表示i1和i2相等。 现在在比较器的比较函数中实现排序功能 我猜是这样的:
(i1,i2) -> return i1 > i2 ? 1 : i1 < i2 ? -1 : 0
(i1,i2)->返回i1>i2?1:i1
应该做这项工作。你能给我们看完整的代码吗?谢谢,现在我得到了这个错误:运算符“-”不能应用于(i1-i2)部分的“java.lang.Object”,“java.lang.Object”-你能发布代码片段吗