Supprimer les strings semblables

Résolu
cs_ShayW Messages postés 3253 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 19022 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 17 avril 2024 - 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 19022 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 17 avril 2024 656
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 19022 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 17 avril 2024 656
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 3253 Date d'inscription jeudi 26 novembre 2009 Statut Membre Dernière intervention 3 décembre 2019 57
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 19022 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 17 avril 2024 656
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
Rejoignez-nous