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())