Возникли проблемы с этим ... Я даже не уверен, с чего начать.
У меня есть несортированный список объектов:
myList = (A, Z, T, J, D, L, W...)
Этиобъекты имеют разные типы, но все имеют один и тот же родительский тип.
Некоторые объекты «соответствуют» друг другу с помощью пользовательской бизнес-логики:
A.matches(B) = True
A.matches(C) = False
(Правка: сопоставление коммутативное. X.matches(Y) = Y.matches(X)
)
Я ищу способ в Scala группировать те объекты, которые совпадают, поэтому я получаю что-то вроде:
myMatches = [ [A,B,C], [D,Z,X], [H], ...]
Вот подвох - соответствие не транзитивно .
A.matches(B) = True
B.matches(C) = True
A.matches(C) = False <---- A and C can only be associated through their matches to B
Я все еще хочу, чтобы [A,B,C]
был сгруппирован, хотя A
и C
не совпадают напрямую.
Есть ли простой способ сгруппировать вместевсе вещи, которые соответствуют друг другу?Есть ли название для такой проблемы, чтобы я мог узнать об этом в Google?