You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Arrays.sort()如何解读基于Integer.compare()的Lambda表达式返回值?

关于Arrays.sort中Lambda返回值的解读

首先得明确:你看到的这个Lambda表达式(a,b)->Integer.compare(a[0],b[0]),本质是实现了Comparator<int[]>接口的compare方法——因为intervals是int[][]类型,Arrays.sort的第二个参数需要一个能比较两个int[]元素的比较器。

排序算法如何解读返回值

sort方法只关心返回值的符号,具体数值是1、-1还是其他正负整数都不影响,规则如下:

  • 返回负数:表示第一个参数a应该排在第二个参数b的前面(即逻辑上a < b)
  • 返回0:表示a和b的排序优先级相同,它们的相对位置在排序后可能保持不变(取决于排序算法的稳定性)
  • 返回正数:表示a应该排在b的后面(即逻辑上a > b)

结合你的例子具体说

Integer.compare(a[0],b[0])的返回值刚好严格符合上述规则:

  • 当a[0] < b[0]时,返回-1(负数),所以a会被放到b前面
  • 当a[0] == b[0]时,返回0,两者位置不变
  • 当a[0] > b[0]时,返回1(正数),a会被放到b后面

补充个小细节

其实Comparator的compare方法允许返回任意正负整数,不一定是1或-1——比如你写return a[0] - b[0]也能实现同样的排序逻辑(只要不溢出),sort方法只会根据返回值的正负来判断元素的相对顺序,具体数值大小不影响排序结果。

内容的提问来源于stack exchange,提问作者Ankit Biswas

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.25 03:52:15