Supprimer les strings semblables [Résolu]

Signaler
Messages postés
3258
Date d'inscription
jeudi 26 novembre 2009
Statut
Membre
Dernière intervention
3 décembre 2019
-
Messages postés
15194
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
6 décembre 2020
-
Bonjour,
J'ai une list de list de string

private list1 as new list (of list(of string))
une sub remplit list1

Private sub Fill( byval liststr as  list(of string))
list1.add(liststr)
end sub

la sub fill est appellé plusieurs fois
je voudrais avant d'ajouter liststr à list1 verifier s'il y a de un meme item semblable dans list1
semblable c.a.d les memes strings apparaisent dans un odre différent
si list1(0) contient les strings suivant
BONJOUR
BONSOIR
SALUT
AUREVOIR
et que liststr contient
SALUT
AUREVOIR
BONJOUR
BONSOIR
ne pas ajouter à list1

Trouver un algo rapide pour verifier

merci

3 réponses

Messages postés
199
Date d'inscription
mercredi 23 avril 2003
Statut
Contributeur
Dernière intervention
25 mai 2017
9
Bonjour Cs_ShayW,

Je sais pas si ce sera assez rapide mais moi je pense à cela:
- comparer le nombre d'éléments dans list(0) et liststr
- Si différent alors les deux listes sont différentes : Cela devrait éliminer un bon nombre de cas.
- Si identique alors trier list(0) et liststr
- faire une boucle de 1 à nombre d'éléments pour comparer chaque élement de list(0) et liststr, dès qu'une différence est trouvée, on est en présence de deux listes non identiques et non sort de la boucle.

Le cas le plus lent serait la comparaison de deux chaines identiques.

Bonne journée.
Messages postés
15194
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
6 décembre 2020
474
Bonjour,

Si tu codes en VB.net tu peux te servir de Linq:
Méthode Distinct
Méthode Exept

D'ailleurs, pour plus d'efficacité, merci de choisir le sous forum adéquat pour tes éventuels prochains messages:
VB.net
VBA
VB script
Vb6

Messages postés
15194
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
6 décembre 2020
474
Union est encore plus adapté à ta demande
http://msdn.microsoft.com/en-us/vstudio/bb737918
Messages postés
3258
Date d'inscription
jeudi 26 novembre 2009
Statut
Membre
Dernière intervention
3 décembre 2019
50
Bonjour à tous


J'ai réussi avec un linq
For iter = listresults.Count - 1 To 1 Step -1
Dim uniqueNamesQuery = listresults(iter).listr.Union(listresults(iter - 1).listr).Distinct
If uniqueNamesQuery.Count = listresults(iter).listr.Count Then
listresults.RemoveAt(iter)
End If
Next

Whismeril
bonjour
D'ailleurs, pour plus d'efficacité, merci de choisir le sous forum adéquat

ça m'a échappé ou plus justement il y a un petit inconvenient
comme dans le combo des sous forum visual basic est déja choisi
en cliquant sur valider il n'y a pas d'avertissement
Messages postés
15194
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
6 décembre 2020
474
Union, fusionne déjà deux listes sans doublons, du coup le distinct supplémentaire ne sert à rien.

comme dans le combo des sous forum visual basic est déja choisi
en cliquant sur valider il n'y a pas d'avertissement
je sais c'est remonté.....

Je déplace en VB.Net