有没有人有一个有用的助记符来实现Comparator?

its*_*dok 10 java mnemonics comparator

每次我需要实现一个比较器时,我都会陷入困境,试图记住何时应该返回-1和1时,我必须查找它.

我的意思是,显然-1 较小,所以它意味着first小于second.但每当我对自己这么说时,我都会唠叨"你确定吗?" 感觉.我怀疑我的困惑部分来自于我需要降序排序时反过来实现它.

你用什么来记住哪个是哪个?

xap*_*mah 10

我使用这个简单的"减法"助记符:

first - second
Run Code Online (Sandbox Code Playgroud)

因此,如果first"少于" second你会得到否定结果,否则 - 如果相等则为正或零.

  • +0:除非溢出是一个问题,在这种情况下`Integer.MIN_VALUE - Integer.MAX_VALUE = 1`;) (3认同)
  • 或者那么古老的`(0 - Integer.MIN_VALUE)== Integer.MIN_VALUE`.:-) (2认同)

cha*_*ium 5

我不确定您的助记符是什么意思。但是,我也有非常相似的认知失调。

我非常有视觉感,所以我使用数字线(那是我在小学时教过的数字线)。我只是将负数可视化为“左”,将0可视为“中心”,将正数可视为“右”。对应于真相:-1 <0 <1


Tad*_*pec 5

comparator.compare(a, b) < 0 <==> a < b