Java 使用长返回型lambda比较器
差不多Java 使用长返回型lambda比较器,java,lambda,comparator,Java,Lambda,Comparator,差不多 arrayList.sort((长a,长b)->a-b) 返回 从long到int的可能有损转换 是否有解决方法来避免长时间到整数的转换。使用Long.compare(a,b),或者使用自然顺序(sort(Comparator.naturalOrder())),或者sort(Long::compare)您的比较器无效,因为它返回一个Long,而预期的返回类型是int(排序函数的预期类型是int) 解决方案是给出一个返回整数的排序条件(在这里,您可以控制排序,升序或降序): 您还可以使用j
arrayList.sort((长a,长b)->a-b)代码>
返回
从long到int的可能有损转换
是否有解决方法来避免长时间到整数的转换。使用Long.compare(a,b)
,或者使用自然顺序(sort(Comparator.naturalOrder())
),或者sort(Long::compare)
您的比较器无效,因为它返回一个Long,而预期的返回类型是int(排序函数的预期类型是int)
解决方案是给出一个返回整数的排序条件(在这里,您可以控制排序,升序或降序):
您还可以使用java.utils中的Comparator
对于升序:
arrayList.sort(Comparator.naturalOrder())
对于降序排序:
arrayList.sort(Comparator.reverseOrder())
ArrayList中的数字类型是什么?不要养成使用a-b
编写比较器结果的习惯,以符合比较器的返回值。这最终会给你带来麻烦。花点时间写a>b?1:a
。或者,如果可能,使用Long.compare
或Integer.compare
arrayList.sort(Comparator.naturalOrder())
arrayList.sort(Comparator.reverseOrder())