SortedList qui trie automatiquement elements [Résolu]

fdiedler2000 383 Messages postés samedi 29 janvier 2005Date d'inscription 1 décembre 2008 Dernière intervention - 27 mai 2007 à 22:15 - Dernière réponse : fdiedler2000 383 Messages postés samedi 29 janvier 2005Date d'inscription 1 décembre 2008 Dernière intervention
- 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 !
Afficher la suite 

Votre réponse

11 réponses

Meilleure réponse
Kevin.Ory 843 Messages postés mercredi 22 octobre 2003Date d'inscription 7 janvier 2009 Dernière intervention - 3 juin 2007 à 03:21
3
Merci
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

Merci Kevin.Ory 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 124 internautes ce mois-ci

Commenter la réponse de Kevin.Ory
cs_casy 7745 Messages postés mercredi 1 septembre 2004Date d'inscription 24 septembre 2014 Dernière intervention - 27 mai 2007 à 22:20
0
Merci
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 #
Commenter la réponse de cs_casy
jmfmarques 7668 Messages postés samedi 5 novembre 2005Date d'inscription 22 août 2014 Dernière intervention - 27 mai 2007 à 22:26
0
Merci
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)
Commenter la réponse de jmfmarques
fdiedler2000 383 Messages postés samedi 29 janvier 2005Date d'inscription 1 décembre 2008 Dernière intervention - 27 mai 2007 à 22:31
0
Merci
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
Commenter la réponse de fdiedler2000
fdiedler2000 383 Messages postés samedi 29 janvier 2005Date d'inscription 1 décembre 2008 Dernière intervention - 27 mai 2007 à 22:36
0
Merci
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 ?
Commenter la réponse de fdiedler2000
jmfmarques 7668 Messages postés samedi 5 novembre 2005Date d'inscription 22 août 2014 Dernière intervention - 27 mai 2007 à 22:37
0
Merci
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 ...
Commenter la réponse de jmfmarques
fdiedler2000 383 Messages postés samedi 29 janvier 2005Date d'inscription 1 décembre 2008 Dernière intervention - 27 mai 2007 à 22:58
0
Merci
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"
Commenter la réponse de fdiedler2000
Charles Racaud 3181 Messages postés dimanche 15 février 2004Date d'inscription 9 avril 2017 Dernière intervention - 27 mai 2007 à 23:04
0
Merci
Salut,

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





__________
 Kenji
Commenter la réponse de Charles Racaud
jmfmarques 7668 Messages postés samedi 5 novembre 2005Date d'inscription 22 août 2014 Dernière intervention - 27 mai 2007 à 23:05
0
Merci
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)
Commenter la réponse de jmfmarques
fdiedler2000 383 Messages postés samedi 29 janvier 2005Date d'inscription 1 décembre 2008 Dernière intervention - 27 mai 2007 à 23:28
0
Merci
[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 ^^
Commenter la réponse de fdiedler2000
fdiedler2000 383 Messages postés samedi 29 janvier 2005Date d'inscription 1 décembre 2008 Dernière intervention - 3 juin 2007 à 13:29
0
Merci
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 !!
Commenter la réponse de fdiedler2000

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.