Это деталь реализации.Реализация TreeSet
(или, точнее, реализация поддержки TreeMap
) может решить по своему усмотрению, является ли A
или B
элементом уже в Set
, когда она вызывает compare
.
Эта реализация не должна затрагивать вашу реализацию compare
.
Глядя на реализацию JDK 8, я вижу, что первый аргумент (A) оказывается ключевым (или элемент), который вы хотите добавить (или проверить, присутствует ли он уже), а второй аргумент - это ключ (или элемент), уже содержащийся в TreeMap
(или TreeSet
):
final Entry<K,V> getEntryUsingComparator(Object key) {
@SuppressWarnings("unchecked")
K k = (K) key;
-----------
Comparator<? super K> cpr = comparator;
if (cpr != null) {
Entry<K,V> p = root;
while (p != null) {
int cmp = cpr.compare(k, p.key);
-
if (cmp < 0)
p = p.left;
else if (cmp > 0)
p = p.right;
else
return p;
}
}
return null;
}