Colección parcialmente ordenada de Java <E>

Estoy buscando una implementación Java de una estructura de datos que contenga una colección de elementos para los cuales unorden parcial está definido, y que permite iterar sobre esos elementos en algunosorden topologico (cualquiera de los posibles pedidos está bien; preferiblemente, un pedido estable a medida que el contenido de la colección cambia).

Lo ideal sería implementar unaCollection<E>, Set<E>oSortedSet<E> Interfaz y soporte de todos los métodos en la interfaz. En términos de especificar el orden total, la colección podría ser instanciada con unComparator<E>, y el comparador podría lanzar una excepción (ClassCastException?) si dos elementos que se comparan no están ordenados entre sí. Como beneficio adicional, lanzaría una excepción si un elemento insertado produjera una anomalía en el pedido (un ciclo en el gráfico de elementos ordenado).

Así que sí, lo que quiero es un tipo topológico, pero me gustaría unobjeto de colección que mantiene ese orden de clasificación con cada inserción / eliminación, de manera similar a cómo SortedSet mantiene una colección en orden ordenado.

Existe algo como esto? En alguna biblioteca de código abierto?

Referencias:

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

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

Actualizar

Terminé con un enfoque diferente para mi problema en el que no necesitaré un poset, después de darme cuenta de las implicaciones de rendimiento de mis requisitos (y varios otros problemas que no pude resolver por completo, usando el poset). Confiar en el comparador para determinar el orden entre los elementos significa que para la inserción del elemento, tengo que consultar el comparador respecto de cada elemento existente, lo que cuesta O (n) por inserción.

Si el rendimiento no fuera muy importante (lo es), y si el número de elementos estuviera limitado a algo razonable (no lo es), creo que habría adoptado el enfoque sugerido por Willie, aunque quizás con mi propia implementación gráfica y topológica. Ordenar la implementación para minimizar las dependencias.

Respuestas a la pregunta(1)

Su respuesta a la pregunta