Pergunta

O método CompareTo() para minha classe é dinâmico, e pode variar de uma simples comparação para comparações em um número de colunas. Isso tudo é determinada em tempo de execução, e ele funciona muito bem.

Mas em alguns casos, eu quero que qualquer tentativa de classificar uma coleção de meus objetos usando a comparação padrão para simplesmente não fazer nada.

Tendo CompareTo() apenas retornar um 0 para qualquer comparação, para minha surpresa, não funciona. A lista é reorganizado em alguma ordem estranha, aparentemente aleatória.

Existe uma maneira de fazer isso na implementação do método CompareTo()? Eu prefiro não lidar com isso no nível do conjunto por ter que substituir Sort ().

Foi útil?

Solução

Isso porque QuickSort não é um estável espécie . Eu não vejo uma boa opção para corrigir isso no método CompareTo a menos que você pode de alguma forma obter o índice do elemento.

Outras dicas

Eu refúgio't provou isso, mas como uma sugestão, e se você tentar retornar sempre 1, ou sempre -1?

Você tem que substituir Sort(). A implementação padrão de ofertas Sort() há garantias sobre a forma como ele vai usar CompareTo() para chegar a uma coleção ordenada, de modo que não há nenhuma maneira de usá-lo para fazer Sort() fazer a coisa certa.

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