Collections - downloaden



  • Da das Collection-Framework in C# so richtig absolut hardcore suckt, empfehle ich (wie auch btw. die MSDN selbst) dringendst jedem, diese Collection-Sammlung herunterzuladen:
    http://www.wintellect.com/powercollections/download.aspx

    Die Dokumentation gibt's hier:
    http://www.wintellect.com/powercollections/documentation/

    Das sollte IMHO wirklich in die FAQ, weil man diese Teile absolut braucht.
    Jeder, der nur einigermaßen ernsthaft bisher mit den Collections gearbeitet hat, wird das voll und ganz bestätigen können.

    Mit einer LinkedList, wo man nur in O(n) entfernen kann, kann man genausowenig arbeiten, wie man so ohne weiteres immer auf eine Dequeue verzichten kann. Zwar ist jetzt hier noch nicht wirklich viel verhanden, aber das dürfte sich in der nächsten Zeit gut entwickeln.

    Stay tuned 😑



  • Mit einer LinkedList, wo man nur in O(n) entfernen kann

    Warum ist das denn so? Das wird doch bestimmt auch einen Grund haben.

    Ich meine selbst wenn das ein ganz schlechter Programmierer programmiert hat, werden es wohl noch andere prüfen bevor es in solch ein bekanntes Framework einfließt.

    Gibt es auch Artikel wo beschrieben ist, warum die Collections sucken?



  • Warum ist das denn so?

    Weil man keinen Iterator (Enumerator) übergeben kann, sondern nur Werte. Deshalb wird nach dem Eintrag linear gesucht.
    Vielleicht ist der Grund der, dass es nicht möglich sein soll, über Enumeratoren die Collections zu manipulieren.

    Gibt es auch Artikel wo beschrieben ist, warum die Collections sucken?

    Da wirst du genug dazu im Internet finden. Der Hauptkritikpunkt (der auch meiner ist) ist, dass es einfach nichts gibt, vor allem nicht im Generic-namespace. Es gibt zwar ne Queue, aber keine Dequeue. Und gerade hab ich dringend ein Set gebraucht, durch was in der stdlib willst du das ersetzen?



  • *mist*



  • Mit einer LinkedList, wo man nur in O(n) entfernen kann

    Hui, das wusst ich ja gar nicht. Aber stimmt, wenn man über Remove entfernt, muss das ja eigentlich lineare Komplexität haben. Aber auch wenn das .NET Framework kein Entfernen per Iterator erlaubt, so ist es doch möglich per RemoveAt per Angabe des Indexes zu löschen.

    Ich gebe zu, dass das nicht immer ideal ist, aber man sollte nicht verschweigen, dass es auch mit .NET möglich ist, ein Objekt in konstanter Zeit aus einer Liste rauszuhauen.

    Mfg, smasher1985



  • Ich hab grad keine Doku zu 2.0 zur Hand. Wenn man allerdings einen Index bei einer LinkedList angibt, dann kann das ja eigentlich nicht in O(1) passieren.



  • 🙄 upps, du hast natürlich Recht. Ich war grad bei gedanklich irgendwie bei einer Array-Implementierung...

    ok, dann hast du Recht und das löschen ist bei einer verketteten Liste nur in linearer Zeit möglich. Wundert mich jetzt auch grad, dass es nicht auch möglich ist, per Angabe eines Iterators zu löschen...vor allem weil es doch überhaupt keine Schwierigkeit darstellen würde, das zu implementieren oder doch?

    Mfg, smasher1985


Anmelden zum Antworten