Comunidad Gambas-es
[SOLUCIONADO] Ordenar un objeto "Collection" - Versión para impresión

+- Comunidad Gambas-es (https://gambas-es.org)
+-- Foro: Gambas (https://gambas-es.org/forumdisplay.php?fid=3)
+--- Foro: Aplicaciones/Fragmentos de Código (https://gambas-es.org/forumdisplay.php?fid=8)
+--- Tema: [SOLUCIONADO] Ordenar un objeto "Collection" (/showthread.php?tid=1011)



Ordenar un objeto "Collection" - tincho - 02-09-2022

Hola a todos.
Alguien podria decirme como ordenar una coleccion simple, donde el indice es un texto y el valor también.
Dejo un ejemplo con una coleccion similar, donde el indice es un año, y está ordenado de menor a mayor, luego el texto, que es lo que deseo ordenar de menor a mayor es un texto alfanumérico cualquiera.

Primer planteo de solucion
GAMBAS
  1.  
  2.   Dim aTmp As New String[]
  3.   Dim cTemp As New Collection
  4.   Dim sText As String
  5.  
  6.   For Each sText In c
  7.     aTmp.Add(sText & "\t" & c.Key)
  8.   Next
  9.  
  10.   aTmp.Sort(gb.Ascent)
  11.  
  12.   For Each sText In aTmp
  13.     cTemp[Split(sText, "\t")[1]] = Split(sText, "\t")[0]
  14.   Next
  15.  
  16.   Return cTemp
  17.  



Pero la salida no contempla los caracteres diacríticos

...
1879: Uso de tarjetas perforadas para el senso
1938: Z1 - Computadora electromecánica
1941: Z3 - Primera máquina programable y completamente automática
1617: Ábaco neperiano
1854: Álgebra boleana



RE: Ordenar un objeto "Collection" - Shordi - 02-09-2022

Sólo cambia la línea
GAMBAS
  1. aTmp.Sort(gb.Ascent)


por
GAMBAS
  1. aTmp.Sort(gb.Ascent + gb.Language + gb.IgnoreCase)




Saludos


RE: Ordenar un objeto "Collection" - Shell - 02-09-2022

Una colección como "tal" no se puede ordenar, otra cosa es un array como demuestra Shordi.

La colección no tiene indice (un array si, pero esto ya lo sabes de sobra) Smile ,
tiene clave. Un par clave y valor. Un diccionario en Python.

Bajo el ejemplo que también me interesa.

Interesante la forma de como lo haces.

Saludos


RE: Ordenar un objeto "Collection" - tincho - 02-09-2022

(02-09-2022, 11:29)Shordi escribió:  Sólo cambia la línea...

Perfecto, ya ordena todo correctamente sin importar si se trata de  letras mayúsculas o acentuadas.

(02-09-2022, 11:45)Shell escribió:  La colección no tiene indice (un array si, pero esto ya lo sabes de sobra) Smile ,

Desde gambas 3.17 las colecciones S¡si que tienen indice.
https://gambaswiki.org/wiki/comp/gb/collection/keys

(02-09-2022, 11:45)Shell escribió:  Una colección como "tal" no se puede ordenar

Eso no es verdad, se pueden ordenar ciertas colecciones como la que pase el ejemplo, eso si, no es algo "nativo"


RE: Ordenar un objeto "Collection" - Shell - 02-09-2022

(02-09-2022, 13:19)tincho escribió:  Desde gambas 3.17 las colecciones S¡si que tienen indice.
https://gambaswiki.org/wiki/comp/gb/collection/keys

Pero eso es un método que devuelve un array de claves de la colección. Huh
 
(02-09-2022, 13:19)tincho escribió:  Eso no es verdad, se pueden ordenar ciertas colecciones como la que pase el ejemplo, eso si, no es algo "nativo"

A eso me refiero, que no es de forma nativa.

Pero dice un dicho que "para siete vicios existen siete virtudes", o al revés.
Al igual que has encontrado una forma de ordenar los valores de la colección.

Saludos