Допустим, у меня есть несортированный список из четырех объектов: [B, C, A, D]
.
Все четыре объекта одного типа, и:
(A > B),
(C > D),
(A != C or D)
(B != C or D)
(C != A or B)
(D != A or B).
Под ! =
я имею в виду, что они не меньше, ни равны, ни больше, чем другие объекты.
Мне нужно «отсортировать» список так, чтобы
всегда будет предшествовать B
, а C
всегда будет предшествовать D
. Помимо этих двух требований, я не требую упорядочивания списка; поэтому, учитывая ранее описанный список, функция сортировки должна возвращать либо [A, B, C, D]
, либо [C, D, A, B]
.
Как по причине этой проблемы я пытаюсь отсортировать массив объектов java.lang.Class
на основе их отношений друг с другом. Например, если A
является суперклассом / суперинтерфейсом B
, то A
меньше, чем B
. Если A
расширяет / реализует B
, то A
больше, чем B
. Если A
равно B
, то, очевидно, A
равно B
. В противном случае, A
совершенно несопоставим с B.