术语
反对称性(antisymmetric)
反对称关系是一个任意关系,例如a.relation(b) && b.relation(a)
的意味着a
和b
相等。
结合律
一个结合运算是a.operation(b).operation(c)
总是等于a.operation(b.operation(c))
的二元操作。
二元操作
一个二元操作(例如+
),或者格式为static A operation(A first, A second)
的方法,或者格式A operation(A second)
的在类A
中的方法。
交换律
如果a.operation(b)
总是等于b.operation(a)
则操作是可交换的。
可以查看对称性了解类似的关系。
相等
在提到原生类型,如果p1==p2
则p1
和p2
被称为相等。提到对象,除非另有说明,如果a1.equal(a2)
则a1
和a2
被称为相等。当我们想要身份相等时,我们可以清楚地说,“相同的实例”。(Range是一个为“equal”指定不同含义的类的示例。)
等价关系
等价关系是一个自反性,对称性,传递性的二元操作。Object.equals
的契约指定了它必须定义了一个等价关系。
幂等
在一个幂等操作中,a.operation().operation()
总是等于a.operation()
。
惰性
除非绝对需要,惰性视图不会查询后背对象。例如Iterators.filter(Iterator, Predicate)
返回Iterator
,该迭代器只有需要一个新的元素时才会移动后端迭代器。
偏序
这个关系是说如果它是自反的,传递的并且反对称的则成为偏序关系。如果对于所有a
和b
存在a.relation(b) || b.relation(a)
属性,则它是全序的。
原生类型(primitive)
boolean
,byte
,short
,char
,int
,float
,long
,double
。
自反性
在一个自反关系中,a.relation(a)
总是true
。
关系
一个关系运算(例如<
),或者格式为static boolean relation(A first, A second)
的方法,或者格式为boolean relation(A second)
的类A
中的方法。
对称性
在对称性关系中,a1.relation(a2)
总是与a2.relation(a1)
有相同的布尔值。
全序
一个全序是非对称性,传递性的关系,并且存在a.relation(b)
或者b.relation(a)
所具有的性质。(它遵循自反省关系)
例如,当我们说Comparator
必须定义一个全序,我们意味着关系comparator.compare(a, b) <= 0
满足:
comparator.compare(a, b) <= 0 && comparator.compare(b, a) <= 0
意味着comparator.compare(a, b) == 0
,并且顺序与equal一致,a.equals(b)
。comparator.compare(a, b) <= 0 && comparator.compare(b, c) <= 0
意味着comparator.compare(a, c) <= 0
。- 对于所有
a, b
,comparator.compare(a, b) <= 0 || comparator.compare(b, a) <= 0
。
传递性
对于一个传递关系,a1.relation(a2) && a2.relation(a3)
总是意味着a1.relation(a3)
。