Java частично заказал коллекцию <E>

Я ищу реализацию Java структуры данных, которая содержит коллекцию элементов, для которыхчастичный заказ определяется, и который позволяет перебирать эти элементы в некоторыхтопологический порядок (любой из возможных порядков в порядке; предпочтительно стабильный порядок при изменении содержимого коллекции).

В идеале это будет реализовывать,CollectionSet, или жеSortedSet интерфейс и поддержка всех методов интерфейса. С точки зрения определения общего порядка, коллекция может быть создана с помощьюComparatorи компаратор может выдать исключение (ClassCastException?) если два сравниваемых элемента не упорядочены относительно друг друга. В качестве бонуса было бы выброшено исключение, если вставляемый элемент вызовет аномалию упорядочения (цикл в упорядоченном графе элементов).

Так что да, я хочу топологический вид, но я бы хотелобъект коллекции, который поддерживает этот порядок сортировки с каждой вставкой / удалением, аналогично тому, как SortedSet поддерживает коллекцию в отсортированном порядке.

Существует ли что-то подобное? В какой-нибудь библиотеке с открытым исходным кодом?

Рекомендации:

http://en.wikipedia.org/wiki/Partially_ordered_set

http://en.wikipedia.org/wiki/Topological_sorting

Обновить

Я закончил с другим подходом к моей проблеме, где я выигралмне не понадобится сеттинг, после того, как я осознал, как влияют на производительность мои требования (и другие проблемы, которые я не могЯ не могу решить, используя poset). Использование компаратора для определения упорядоченности элементов означает, что для вставки элемента я должен консультироваться с компаратором по каждому существующему элементу, стоимость O (n) на вставку.

Если производительность не очень важна (это так), и если количество элементов ограничено чем-то разумным (это неt), я думаю, я бы использовал подход, предложенный Вилли, хотя, возможно, с моей собственной реализацией графа и топологической сортировкой, чтобы минимизировать зависимости.

Ответы на вопрос(1)

Ваш ответ на вопрос