[Gambas-user] Rename a Collection Key retaining the order

Bruce Steers bsteers4 at gmail.com
Sun Jan 9 14:54:28 CET 2022

Is there a simple way to rename a collection key name but retain the order?

I found i can rename it using Swap but it pops the item at the and of the
collection index.

Best i have so far is this fuction that copies and returns the collection
with a preserved order.
so if my second collection item had the key "t2" I can do this...

*cCollection = RenameKey(cCollection, "t2", "ttt2")Public Sub RenameKey(c
As Collection, sName As String, sNewName As String) As Collection    Dim i
As Integer = c.Keys.Find(sName)  ' find key position  Swap c[sName],
c[sNewName]  ' swap key names  ' make a new collection preserving original
order  Dim nc As New Collection  For cnt As Integer = 0 To c.Count - 1
If cnt = i Then  ' insert point so move last added key to our position
nc.Add(c[c.Keys[c.Keys.Max]], c.Keys[c.Keys.Max])    Else If cnt > i Then
 'after insert so shunt keys back one      nc.Add(c[c.Keys[cnt - 1]],
c.Keys[cnt - 1])    Else  ' before insert so just copy
nc.Add(c[c.Keys[cnt]], c.Keys[cnt])    Endif  Next  Return nc  End*

Am i missing a one line command or is that the only way to do it ?

Cheers all :)
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.gambas-basic.org/pipermail/user/attachments/20220109/47fc2d6e/attachment.htm>

More information about the User mailing list