O Java LinkedHashSet usa uma lista duplamente vinculada. Pode também ser repetido para trás?

Norintor:

Oracle documentação diz seguinte sobre LinkedHashSet: "Tabela de Hash e vinculado lista implementação da interface Set, com ordem de iteração previsível Esta implementação difere de HashSet na medida em que mantém uma lista duplamente vinculada que atravessa todas as suas entradas.".

O iterador você pode obter é na ordem de inserção. Iteração em ordem inversa-inserção também seria pensamento technicially feasable, como é um duplamente -ligados.

Pode tal reverso-Iterator ser criada (ou mesmo um ListIterator que faz as duas coisas)?

Mureinik:

LinkedHashSetnão expõe qualquer API para iterar-lo para trás. Embora isso teria um impacto no desempenho realmente ruim, você pode copiar o LinkedHashSeta um List(mantendo a sua ordem) e depois para trás iterar-lo:

LinkedHashSet<SomeClass> myLinkedHashSet = ...;
List<SomeClass> myList = new ArrayList<>(myLinkedHashSet); // Order is retained
ListIterator<SomeClass> myIter = myList.listIterator(myList.size());
while (myIter.hasPrevious()) {
    System.out.println(myIter.previous());
}

Acho que você gosta

Origin http://10.200.1.11:23101/article/api/json?id=394617&siteId=1
Recomendado
Clasificación