Я давно застал эту проблему и не смог найти помощь в другом месте в Интернете, поэтому это может оказаться полезным для кого-то еще позже.Сортировка порядка выполнения метода в Java
У меня есть список слов, и каждое слово в списке имеет свои собственные два массива слов, которые должны идти до и после.
Вот пример:
"forest" - before:{"tree"}
"frog" - after:{"mushroom"}
"mushroom"
"leaf" - after:{"mushroom"}, before: {"frog"}
"tree" - before:{"mushroom"}
Эти слова должны быть упорядочены в следующем порядке: лес, дерево, грибы, листья, лягушки. Таким образом, в принципе, «после» не означает, что слово должно идти сразу после другого (и не «до»), оно просто не может идти перед словом (или в случае «до»).
Я попытался решить эту проблему, используя списки массивов и добавление элементов в пользовательские индексы, которые разбиваются, как только вставлен элемент, такой как «лист» (элемент, который находится между двумя другими элементами).
Этот пример упрощен, поэтому он никого не смущает, я на самом деле пишу модный загрузчик, который сортирует методы, аннотация которых указывает, какие моды они должны выполнять после/до.
EDIT: Мне удалось решить проблему, обратившись до конца на элементы, содержащиеся перед массивами.
После этого все, что я сделал, это перебрать все элементы, а затем проверить, был ли этот элемент уже выполнен (вы увидите, почему в секунду), если он не был выполнен, выполните все после того, как элементы сначала в том же и затем выполнить фактический элемент. Я также делаю некоторые проверки для предотвращения циклов и т. Д.
Можете ли вы разместить код, который вы пробовали? Кто-нибудь скажет, какие у вас проблемы? – jackie