2

3つのオブジェクトab、およびcがあり、それらのいずれも互いに等しくないことを確認したい場合は、次のことを確認する必要があります。

if (!a.equals(b) && !b.equals(c) && !a.equals(c)) { // to simplify, assume non-null
    // do something
}

Javaドキュメントによると、正しく実装されたequalsメソッドの場合:

これは推移的です。null以外の参照値x、y、およびzの場合、x.equals(y)がtrueを返し、y.equals(z)がtrueを返す場合、x.equals(z)はtrueを返す必要があります。

これは、平等は推移的であると述べていますが、不平等はどうですか?

4

5 に答える 5

6

推移的ではありません。x=1、、y=2およびを検討してくださいz=1

于 2011-09-07T11:44:03.137 に答える
3

不等式は決して推移的ではありません(等しくない2つの要素、aとbがある場合)。その場合、!a.equals(b)があり、対称性のために!b.equals(a)がありますが、同一性のためにa.equals(a)があります。したがって、不平等は推移的であってはなりません。

于 2011-09-07T11:44:37.363 に答える
3

与えられたa = 5; b = 6; c = 5

a!= b-> true

b!= c-> true

a!= c-> false

いいえ、不平等は推移的ではありません。

于 2011-09-07T11:45:17.927 に答える
1

いいえ、もちろん違います。

2 != 3
3 != 2

しかし

2 == 2
于 2011-09-07T11:44:18.740 に答える
1

うーん、ダメ。推移性については、任意のx、y、zに対して真の条件が必要です。しかし、z == xを選択した場合、

x != y

およびy!= z

その後、意味しません

x != z

zxなので!

于 2011-09-07T11:44:32.373 に答える