SortedList qui trie automatiquement elements

Résolu
fdiedler2000 Messages postés 383 Date d'inscription samedi 29 janvier 2005 Statut Membre Dernière intervention 1 décembre 2008 - 27 mai 2007 à 22:15
fdiedler2000 Messages postés 383 Date d'inscription samedi 29 janvier 2005 Statut Membre Derniè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 ?

Merci bcp !

11 réponses

Kevin.Ory Messages postés 840 Date d'inscription mercredi 22 octobre 2003 Statut Membre Dernière intervention 7 janvier 2009 11
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.

Cordialement
3
cs_casy Messages postés 7741 Date d'inscription mercredi 1 septembre 2004 Statut Membre Dernière intervention 24 septembre 2014 40
27 mai 2007 à 22:20
Et que signifie pour toi Sorted dans le nom de la classe ?????

La traduction de SortedList ne serait-elle pas par hasard "Liste triée" ???

Peut-etre qu'une simple List te suffirait dans ton cas.

---- Sevyc64  (alias Casy) ----<hr size="2" width="100%" /># LE PARTAGE EST NOTRE FORCE #
0
jmfmarques Messages postés 7668 Date d'inscription samedi 5 novembre 2005 Statut Membre Dernière intervention 22 août 2014 28
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)
0
fdiedler2000 Messages postés 383 Date d'inscription samedi 29 janvier 2005 Statut Membre Dernière intervention 1 décembre 2008
27 mai 2007 à 22:31
Oui je sais que c'est une listé triée mais une ArrayList trie aussi !!!

De plus avec les Key ca marche pas dans mon cas !

merci
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
fdiedler2000 Messages postés 383 Date d'inscription samedi 29 janvier 2005 Statut Membre Dernière intervention 1 décembre 2008
27 mai 2007 à 22:36
En fait ce sont les Key qui sont triées pas les Value

SInon existe t-il une liste avec (Key, Value) mais qui ne trie pas ?
0
jmfmarques Messages postés 7668 Date d'inscription samedi 5 novembre 2005 Statut Membre Dernière intervention 22 août 2014 28
27 mai 2007 à 22:37
Ca ne "marche" pas, pourquoi ? puisqu'en principe l'index et la clé sont liés et que l'un te permet de connaître l'autre ...
0
fdiedler2000 Messages postés 383 Date d'inscription samedi 29 janvier 2005 Statut Membre Derniè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"
0
Utilisateur anonyme
27 mai 2007 à 23:04
Salut,

Tu as des classes toutes prêtes pour ca :
Dim l As New System.Collections.Generic.Dictionary(Of String, Long)()





__________
 Kenji
0
jmfmarques Messages postés 7668 Date d'inscription samedi 5 novembre 2005 Statut Membre Dernière intervention 22 août 2014 28
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)
0
fdiedler2000 Messages postés 383 Date d'inscription samedi 29 janvier 2005 Statut Membre Derniè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 ^^
0
fdiedler2000 Messages postés 383 Date d'inscription samedi 29 janvier 2005 Statut Membre Derniè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 !!
0
Rejoignez-nous