Domanda

Il metodo CompareTo() per la mia classe è dinamica, e può variare da un semplice confronto per i confronti su un numero di colonne. Tutto questo è determinato in fase di esecuzione, e funziona benissimo.

Ma in alcuni casi, voglio ogni tentativo di ordinare una raccolta dei miei oggetti utilizzando il confronto predefinito di fare proprio nulla.

Avendo CompareTo() solo restituire un 0 per qualsiasi confronto, con mia grande sorpresa, non funziona. La lista viene riordinata in qualche strano, ordine apparentemente casuale.

C'è un modo per fare questo nella implementazione del metodo CompareTo()? Preferirei non ne occupi fino a livello di raccolta dal dover ignorare Sort ().

È stato utile?

Soluzione

Questo perché QuickSort non è un stabile sorta . Non vedo una buona opzione per risolvere questo problema nel metodo CompareTo a meno che non è possibile ottenere in qualche modo l'indice dell'elemento.

Altri suggerimenti

I havent provato, ma come un suggerimento, che cosa succede se si tenta di restituire sempre 1, o sempre -1?

Devi eseguire l'override Sort(). L'implementazione predefinita di Sort() non offre alcuna garanzia circa come utilizzerà CompareTo() per arrivare ad una raccolta differenziata, quindi non c'è alcun modo di usarlo per fare Sort() fare la cosa giusta.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top