fdiedler2000
Messages postés383Date d'inscriptionsamedi 29 janvier 2005StatutMembreDernière intervention 1 décembre 2008
-
27 mai 2007 à 22:15
fdiedler2000
Messages postés383Date d'inscriptionsamedi 29 janvier 2005StatutMembreDernière intervention 1 décembre 2008
-
3 juin 2007 à 13:29
Bonjour
Tout est dans le titre !
Par exemple :
J'add dans ma SortedList ceci :
Azerty
Czerty
Bzerty
... dans cet ordre.
Si je regarde l'ordre de la SortedList :
Azerty
Bzerty
Czerty
En effet, elle a triée automatiquement les elements par ordre alphabetique sans me le dire !! D'ou les problèmes d'index des elements et mon programme plante completement ( 2h avant de me rendre compte de cela :( )
De plus c'est pareil avec une ArrayList !
Comment faire pour empecher le traige auto ? Existe t-il une list qui ne trie pas les elements ?
Kevin.Ory
Messages postés840Date d'inscriptionmercredi 22 octobre 2003StatutMembreDernière intervention 7 janvier 200911 3 juin 2007 à 03:21
Oulala :
Et si tu nous disais ce que tu essaie de faire? Je me doute que tu est très débutant dans .NET, donc je te répondrai par des concepts très basiques ;)
D'après ce que tu dis, je pense que tu essaie de faire une simple liste de 2 valeurs. Pour cela, pas besoins de prendre une collection de KeyValuePair déjà toute faite, il te suffit d'en déclarer une:
Dim MyList as Generic.List(Of Generic.KeyValuePair(Of String, String))
Ce qui te créé donc une liste de 2 valeurs String.
Mais au lieu d'utiliser la structure KeyValuePair, tu peux très bien te créer ta propre structure ou classe:
Public Structure MyStruct
Nom as String
Valeur as String
End Structure
Dim MyList as Generic.List(MyStruct)
Ce qui te créé donc aussi une liste de 2 valeurs String, celle qui sont défini dans MyStruct. De cette facon, tu peux choisir toi-même les noms, les types et le nombre de tes valeurs.
Sinon, un autre concept important; si tu veux accéder à ta liste par index dans le but de parcourir chaque élément comme ceci:
For i as integer = 0 to MyList.Count - 1
dim Value as MyStruct = MyList.Item(i)
...
End For
Il faut savoir que tu peux faire ca d'une autre facon, avec n'importe quelle collection, même ci celle-ci ne sont pas accessible par index (Dictionary par exemple) :
For Each Value as MyStruct in MyList.Values
...
End For
Et si tu veux récupérer la clée (key as String dans l'exemple) du Dictionary:
For Each Value as KeyValuePair(Of String, MyStruct) in MyList
...
End For
Voilà, j'espère avoir bien compris ton problème et donc que ceci pourra t'aider.
jmfmarques
Messages postés7666Date d'inscriptionsamedi 5 novembre 2005StatutMembreDernière intervention22 août 201427 27 mai 2007 à 22:26
Bonsoir (et sdalut à Casy)
Sans compter que mon petit doigt (qui me chatouillait et que j'ai porté à l'oreille) vient de me souffler qu'avec une SortedList de VB.Net on pouvait se référer, à son gré, tant à l'index qu'à la clé ...(en se servant de la clé, le problème de l'index disparait totalement)
fdiedler2000
Messages postés383Date d'inscriptionsamedi 29 janvier 2005StatutMembreDernière intervention 1 décembre 2008 27 mai 2007 à 22:58
Car je ne connais la clé en fait...
Le probleme est que je récupere la clé en fonction de l'index mais si l'index plante alors la clé est mauvaise ...
J'ai essayer un :
Dim l As New System.Collections.Generic.Dictionary(Of String, Long)
qui ne trie pas les clés mais le probleme est que la methode GetKey n'existe plus et donc comme je ne connais pas la clé je suis mort :D
Voila en gros il me faut une liste avec clé/valeur et possibilité de récuperer le clé avec l'index (GetKey) et qui ne trie pas les clés !!
En gros une SortedList non "Sorted"
jmfmarques
Messages postés7666Date d'inscriptionsamedi 5 novembre 2005StatutMembreDernière intervention22 août 201427 27 mai 2007 à 23:05
Ben... (attends que je réfléchisse à cette très sérieuse question... dur, dur...)
Ah ! Ouf ! j'y suis parvenu :
Une liste triée qui n'est pas triée est une liste ...
Traduction, donc :
A non sorted SortedList is a List.(ce qui veut dire qu'une SortedList qui ne serait pas triée est une List)
Mais là, je te jure, je viens de faire un énorme effort de réflexion... (j'en transpire encore)
fdiedler2000
Messages postés383Date d'inscriptionsamedi 29 janvier 2005StatutMembreDernière intervention 1 décembre 2008 27 mai 2007 à 23:28
[auteurdetail.aspx?ID=231472 Charles Racaud] : J'ai deja essayer...
[auteurdetail.aspx?ID=615490 jmfmarques] : Je ne sais pas comment prendre ton humour... mais je ne sais pas si tu sais ce qu'est une collection avec une paire (clé/Valeur) car à moins du contraire, la collection List (Of) n'accepte pas une paire clé/valeur. Cette derniere equivaut à une ArrayList !
PS : J'ai pas trop réflechie pour te dire ca !
Dsl pour les gros caractéres mais c'est vbfrance qui plante ^^
fdiedler2000
Messages postés383Date d'inscriptionsamedi 29 janvier 2005StatutMembreDernière intervention 1 décembre 2008 3 juin 2007 à 13:29
Exact passer par une structure était une bonne idée ! J'ai deja trouvé une autre solution mais la tienne est mieux :)
Merci pour les explications détaillées ^^
PS: Je ne suis pas débutant en .NET :p mais je suis loin de tout connaitre !!