Este foro usa cookies
Este foro utiliza cookies para almacenar su información de inicio de sesión si está registrado y su última visita si no lo está. Las cookies son pequeños documentos de texto almacenados en su computadora; las cookies establecidas por este foro solo se pueden usar en este sitio web y no representan ningún riesgo de seguridad. Las cookies en este foro también rastrean los temas específicos que ha leído y la última vez que los leyó. Si Ud. continúa navegando, entenderemos que acepta todas las cookies.

Se almacenará una cookie en su navegador, independientemente de la elección, para evitar que se le vuelva a hacer esta pregunta. Podrá cambiar la configuración de sus cookies en cualquier momento utilizando el enlace en el pie de página.

El foro antiguo se encuentra accesible desde https://foro.gambas-es.org en modo de solo lectura.

Calificación:
  • 0 voto(s) - 0 Media
  • 1
  • 2
  • 3
  • 4
  • 5

[SOLUCIONADO]  Ordenar un objeto "Collection"
#1

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


Archivos adjuntos
.gz sample-sort-collection-0.0.1.tar.gz Tamaño: 14.05 KB  Descargas: 3

1 Saludo.
    ¡Gracias!
#2

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


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




Saludos

No podemos regresar
[-] Los siguientes 1 usuarios dice gracias a Shordi por este post:
  • tincho
    ¡Gracias!
#3

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

"El buen perfume en frasco pequeño se vende"
    ¡Gracias!
#4

(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"

1 Saludo.
    ¡Gracias!
#5

(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

"El buen perfume en frasco pequeño se vende"
    ¡Gracias!


Salto de foro:


Usuarios navegando en este tema: 1 invitado(s)