使用 long return 类型的 lambda 比较器

Using lambda comparator with long return type

类似

arrayList.sort((long a, long b)->a - b);

returns

possible lossy conversion from long to int

是否有解决此问题的方法来避免 long 到 int 的转换

当然可以。使用 Long.compare(a, b) 代替,或使用自然顺序 (sort(Comparator.naturalOrder())),或 sort(Long::compare).

您的比较器无效,因为它 return 是 long 而预期的 return 类型是 int (排序函数的预期类型是 int)。

一个解决方案是给出一个排序条件,return是一个整数(这里你可以控制顺序,升序或降序):

arrayList.sort((x, y) -> (x < y) ? -1 : ((x == y) ? 0 : 1));

另一个解决方案(使用与前一个解决方案相同的逻辑):

arrayList.sort(Long::compareTo)

您还可以使用 java.utils

中的比较器

升序排列:

 arrayList.sort(Comparator.naturalOrder()) 

对于降序排序:

arrayList.sort(Comparator.reverseOrder())