Supprimer les strings semblables

Résolu
cs_ShayW
Messages postés
3258
Date d'inscription
jeudi 26 novembre 2009
Statut
Membre
Dernière intervention
3 décembre 2019
- 26 mars 2014 à 00:18
Whismeril
Messages postés
17483
Date d'inscription
mardi 11 mars 2003
Statut
Modérateur
Dernière intervention
4 juillet 2022
- 26 mars 2014 à 19:33
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

carlvb
Messages postés
199
Date d'inscription
mercredi 23 avril 2003
Statut
Contributeur
Dernière intervention
25 mai 2017
11
Modifié par carlvb le 26/03/2014 à 05:41
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.
0
Whismeril
Messages postés
17483
Date d'inscription
mardi 11 mars 2003
Statut
Modérateur
Dernière intervention
4 juillet 2022
600
26 mars 2014 à 07:15
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

0
Whismeril
Messages postés
17483
Date d'inscription
mardi 11 mars 2003
Statut
Modérateur
Dernière intervention
4 juillet 2022
600
26 mars 2014 à 07:20
Union est encore plus adapté à ta demande
http://msdn.microsoft.com/en-us/vstudio/bb737918
0
cs_ShayW
Messages postés
3258
Date d'inscription
jeudi 26 novembre 2009
Statut
Membre
Dernière intervention
3 décembre 2019
56
Modifié par cs_ShayW le 26/03/2014 à 19:28
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
0
Whismeril
Messages postés
17483
Date d'inscription
mardi 11 mars 2003
Statut
Modérateur
Dernière intervention
4 juillet 2022
600
26 mars 2014 à 19:33
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
0