使用 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())
类似
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())