我读过
实现者必须确保sgn(x.compareTo(y))== -sgn(y.compareTo(x))表示所有x和y。
在https://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html上。在我看来let text = new DOMParser().parseFromString(stringHtml, 'text/html');
let textBody = text.body.firstChild;
while (textBody) {
alert(textBody.innerHTML);
// other actions on the textBody element
textBody = textBody.nextSibling;
}
不是Java函数-对吗?如果sgn
表示符号,就不能只说sgn
吗?我知道这个问题可能很讲究,但是我想清楚一点。
答案 0 :(得分:3)
在same Javadocs for compareTo
中,进一步描述了“ sgn”功能。
在前面的描述中,符号 sgn(expression)表示数学符号函数,该函数定义为返回
-1
,0
或{{1 }},根据 expression 的值分别为负,零或正。
在Java中没有1
方法。但是,有一种Math.signum
方法返回sgn
或double
的符号。
作家可能会说
float
但仅引用well-known mathematical function ("sgn")。
指定Math.signum(x.compareTo(y)) == Math.signum(-y.compareTo(x))
是不必要的限制。 x.compareTo(y) == -y.compareTo(x)
的合同仅注明
此对象小于,等于或大于
的负整数,零或正整数
对于小于,返回-1,-3,-5或-1000000都无关紧要。 compareTo
返回a.compareTo(b)
和-1
返回b.compareTo(a)
很好。切换变量时的结果不必是数学相反的值。