86 Stimmen

Behält HashSet die Einfügereihenfolge bei?

Ist die HashSet Sammlung, die in .NET 3.5 eingeführt wurde, behält die Einfügereihenfolge bei, wenn die Iteration mit foreach ?

El Dokumentation besagt, dass die Sammlung nicht sortiert ist, aber sie sagt nichts über die Einfügereihenfolge aus. Eine Vorabversion der BCL Blogeintrag besagt, dass sie ungeordnet ist, aber dieser Artikel besagt, dass die Einfügereihenfolge beibehalten werden soll. Meine begrenzten Tests deuten darauf hin, dass die Reihenfolge beibehalten wird, aber das könnte ein Zufall sein.

1 Stimmen

Auf meinem Computer new HashSet<int>() { 6, 8 }.ToList() liefert [6,8], aber new HashSet<int>() { 8, 6 }.ToList() Rückgabe [8,6]

0 Stimmen

Dies könnte durch folgende Lektüre erklärt werden github.com/dotnet/corefx/blob/master/src/System.Collections/src/

0 Stimmen

Falls Sie eine solche Sammlung benötigen, schauen Sie sich diese an: github.com/OndrejPetrzilka/Rock.Collections

2voto

Sudhir Jonathan Punkte 16099

Nein, ein Hash-Set wird die Einfügereihenfolge nicht beibehalten, zumindest nicht vorhersehbar. Sie können ein LinkedHashSet (Java) oder ein ähnliches verwenden. Ein LinkedHashSet wird die Reihenfolge beibehalten.

Wenn Sie Ordnung wollen, sollten Sie gar nicht erst ein Set verwenden. ... es ist nicht für geordnete Elemente gemacht, außer in Ausnahmefällen.

EDIT: Klingt, als würde ich predigen :-/ Sorry.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X