UTILISATION DE SORTEDLIST POUR TRIER UNE COLLECTION DE VALEURS DÉCOMPOSÉES DE SO

Signaler
Messages postés
12
Date d'inscription
lundi 14 avril 2003
Statut
Membre
Dernière intervention
3 août 2010
-
Messages postés
97
Date d'inscription
vendredi 22 octobre 1999
Statut
Membre
Dernière intervention
13 juin 2016
-
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/52136-utilisation-de-sortedlist-pour-trier-une-collection-de-valeurs-decomposees-de-sous-valeurs

Messages postés
97
Date d'inscription
vendredi 22 octobre 1999
Statut
Membre
Dernière intervention
13 juin 2016
1
Tout en restant dans l'utilisation de SortedList, qui n'est peut-être pas le meilleur choix, j'utilise ContainsKey avant d'ajouter un nouvel élément à la liste. Ce qui me permet de modifier la clef :

ct = 1
originalKey = theKey

Do While theSortedList.ContainsKey(theKey) = True
ct = ct + 1
theKey = originalKey & ct
Loop

Call theSortedList.Add(theKey, theValue)
Messages postés
12
Date d'inscription
lundi 14 avril 2003
Statut
Membre
Dernière intervention
3 août 2010

Dans ce cas, il ne faut pas faire une sortedlist, mais une simple liste et utiliser la fonction sort
List.Sort (New CClassComparer)

Et la classe CComparer est ainsi
Friend Class CClassComparer

' Implements the manual sorting of items by columns.
Implements IComparer(Of CClass)

Public Function Compare(ByVal x As CClass, ByVal y As CClass) As Integer Implements IComparer(Of CClass).Compare

If x.Value > y.Value Then
Return 1
ElseIf x.Value < y.Value Then
Return -1
Else
Return 0
End If

End Function

End Class
Messages postés
1
Date d'inscription
jeudi 12 août 2010
Statut
Membre
Dernière intervention
12 août 2010

Bonjour,

Pouvez vous m'aider avec mon code! je voudrais utiliser une sortedlist sauf que j'ai des clés identique des fois! comment puis je modifier la fonction sortedlidt
Messages postés
97
Date d'inscription
vendredi 22 octobre 1999
Statut
Membre
Dernière intervention
13 juin 2016
1
Une annotation tout de même sur ce code. Je souhaitais juste donner un exemple d'utilisation de SortedList, mais mon exemple à une grosse limitation. Le trie via SortedList implique que les clefs soient uniques, donc une même valeur posera un souci à l'ajout.

Pour améliorer cela, un test peut-être ajouter par vérification de l'existence de la clef (theSortedList.ContainsKey), mais dans mon exemple, cela fausse la valeur de trie. Je ferais mieux la prochaine fois.

' Boucle sur la Collection
For ct = 1 To theList.Count
' Récupération formatée des informations
theInfo = Split(theList(ct).ToString, theSeparator)

' Ajout dans la liste automatiquement triée, de la valeur de trie
' et de la chaine originale : attention la clef doit être unique...
' Donc, il faut l'incrémenter. L'incrément n'a pas d'incidence sur la Chaine d'origine.
' Il y a donc un problème, si trop de clefs de trie identiques...
theSortedValue = CLng(theInfo(thePos))

Do While theSortedList.ContainsKey(theSortedValue) = True
theSortedValue = theSortedValue + 1
Loop

Call theSortedList.Add(theSortedValue, theList(ct).ToString)
Next
Afficher les 7 commentaires