Pergunta

Gostaria de saber se existe uma contrapartida para java.util.LinkedHashMap em .NET? (Ie. Os elementos são (re) ordenou automaticamente se eu acessar um elemento. (Boolean accessOrder)).

Foi útil?

Solução

Um pouco de Googling parece mostrar que não há é construído em C # equivalente para LinkedHashMap, mas existem algumas terceira opções do partido disponíveis.

Outras dicas

Só para esclarecer um pouco para os leitores: LinkedHashMap única se comporta dessa maneira quando construído com uma sobrecarga de construtor particular. Normalmente, os elementos são mantidos na ordem de inserção. (Isso parece um pouco estranho para mim, mas não importa.)

Eu não acredito que haja qualquer classe em .NET. Não seria muito difícil de construir um, usando uma lista encadeada de elementos e um dicionário de chave para o nó de lista ligada. Acesso consistiria então de buscar o nó lista ligada, movendo-a para a cabeça, e retornando o valor.

Eu ficaria feliz de implementá-lo esta noite ou amanhã, se quiser - (! Totalmente testando uma coleção é um negócio demorado), embora provavelmente não com testes de unidade completa etc.

Aqui está um C # implementação eu encontrei em um fórum :

É não documentada, mas tem alguns testes. Não é genérico, no entanto. Pelo menos é algo que eu acho.

@ Jon: Eu apreciaria muito se você pudesse fazer uma implementação rápida. Imaginei que um dicionário em cima de um LinkedList seria melhor, mas ouço existem questões de coleta de lixo com LinkedList que atrasa as coisas.

Eu costumava System.Collections.Specialized.OrderedDictionary como um substituto para LinkedHashMap. Ela trabalhou para mim. Existe algo que eu estou sentindo falta sobre OrderedDictionary (sim, não é genérica, mas está disponível com .Net 2 ou mais recente)? ??

Nhibernate tem uma implementação NHibernate.Util.LinkedHashMap.

Se você já tem no seu código, como eu tive, ele pode ser útil

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top