Implementação de lista que mantém o pedido

Existe um existenteList implementação em Java que mantém a ordem com base noComparator?

Algo que pode ser usado da seguinte maneira:

Comparator<T> cmp = new MyComparator<T>();
List<T> l = new OrderedList<T>(cmp);
l.add(someT);

de modo asomeT é inserido de forma que a ordem na lista seja mantida de acordo comcmp

(Em @andersoj sugestão estou completando minha pergunta com mais uma solicitação)

Também quero poder percorrer a lista na ordem de classificação sem remover os elementos, ou seja:

T min = Const.SMALLEST_T;
for (T e: l) {
  assertTrue(cmp.compare(min, e) >= 0);
  min = e;
}

deve passar.

Todas as sugestões são bem-vindas (exceto dizer-me para usarCollections.sort na lista completa não ordenada), porém, eu preferiria algo emjava.* ou eventualmenteorg.apache.* já que seria difícil introduzir novas bibliotecas neste momento.

Nota: (UPDATE4) Percebi que implementações desse tipo de lista teriam desempenho inadequado. Existem duas abordagens gerais:

Use estrutura vinculada (tipo de) árvore B ou semelhanteUse array e inserção (com busca binária)

Não 1. tem problema com falta de memória de CPU No 2. tem problema com elementos de deslocamento na matriz.

UPDATE2: TreeSet não funciona porque usa o comparador fornecido (MyComparator) para verificar a igualdade e, com base nisso, pressupõe que os elementos são iguais e os excluem. Preciso desse comparador apenas para ordenação, não para filtragem de "exclusividade" (já que os elementos por ordem natural não são iguais)

UPDATE3: PriorityQueue não funciona comoList (como eu preciso) porque não há maneira de percorrê-lo na ordem em que ele está "classificado", para obter os elementos na ordem de classificação, é necessário removê-los da coleção.

ATUALIZAR:

Pergunta semelhante:
Uma boa lista ordenada para Java
Lista de matriz ordenada em Java

questionAnswers(3)

yourAnswerToTheQuestion