Wieso speicherst Du die Daten nicht in einer
DB, z.B. SQLite? Bei 100k Datensätzen wäre das zumindest eine Alternative.
Wenn Du das allerdings nicht willst, dann würde ich so vorgehen.
1. Die Liste bleibt, wie sie ist.
2. Für jede Sortieroption pflegst Du einen eigenen Index, d.h. einfach eine Liste der Referenzen, in der entsprechenden Sortierreihenfolge. Das kann ein Baum oder eine einfache Liste sein
3. Jede Operation (einfügen, ändern, löschen) bedingt (u.U.), das der Index korrigiert wird.
Dein Index benötigt also zwei Methoden: Remove und Add. Remove entfernt das Element aus dem Index, Add fügt es neu ein.
Deine Datenliste hat mindestens drei Methoden: Remove, Add und Update. Bei 'Remove' rufst Du einfach 'Remove' aller Indexe auf, bei 'Add' einfach 'Add' und bei Update erst 'Remove' und dann 'Add'. Beim Update wird klar, das Du dir den alten und den neuen Wert jeweils merken musst.
Mit dem alten Wert entfernst Du das Element aus allen Indexen und mit dem neuen Wert fügst Du das Element wieder in die Indexe ein.
Na ja, oder eben doch SQLLite,
Access, Firebird etc etc etc.
PS: Kann man mit einer Memtable auch Indexe aufbauen? Geht, oder? Dann kann man sich das wirklich alles sparen.