IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C# Discussion :

Recherche inversée dans une liste


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de reeda
    Formateur en informatique
    Inscrit en
    Août 2006
    Messages
    367
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations professionnelles :
    Activité : Formateur en informatique

    Informations forums :
    Inscription : Août 2006
    Messages : 367
    Par défaut Recherche inversée dans une liste
    Bonjour tout le monde,

    j'aimerai faire une recherche inversée dans une liste d'entiers, c'est-à-dire, rechercher de la fin vers le début,

    je ne sais pas s'il y a une méthode déjà existante pour ça pour les objets List<T>, du genre de FindIndex, parce que je sais que cette dernière permet de faire une recherche rapide d'un élement.

    voilà, j'espère que j'étais très clair,
    merci d'avance

    Bien cordialement

  2. #2
    Membre Expert

    Homme Profil pro
    Retraité
    Inscrit en
    Novembre 2007
    Messages
    3 530
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Novembre 2007
    Messages : 3 530
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    List<int> entiers = new List<int>();
     
    for (int i = 0; i < 10; i++)
        entiers.Add(i);
     
    for (int i = entiers.Count; i >= 0; i--)
        if (i == 5)
            MessageBox.Show("Trouvé");

  3. #3
    Membre Expert

    Homme Profil pro
    Retraité
    Inscrit en
    Novembre 2007
    Messages
    3 530
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Novembre 2007
    Messages : 3 530
    Par défaut
    tu peux aussi utiliser le code suivant:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    int valeurCherchee = 14;
    int indexValeur = entiers.FindLast(
        delegate(int bk)
        {
            return bk == valeurCherchee;
        }
    );
    mais avec le problème que si la recherche ne trouve rien, elle renvoie 0 comme résultat, valeur par défaut d'un int. Du coup, tu ne sauras pas si la recherche n'a rien donné ou si l'élément cherché est à l'index 0.

  4. #4
    Modérateur

    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Avril 2007
    Messages
    1 996
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2007
    Messages : 1 996
    Par défaut
    Utilise la méthode d'extension .Reverse(TSource) sur ta liste. Ton en inversera l'ordre et pourra la parcourir normalement.

    Edit : nécessite le FW 3.5 et l'ajout de la clause "using System.Linq" sur ta classe.

  5. #5
    Membre éclairé Avatar de reeda
    Formateur en informatique
    Inscrit en
    Août 2006
    Messages
    367
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations professionnelles :
    Activité : Formateur en informatique

    Informations forums :
    Inscription : Août 2006
    Messages : 367
    Par défaut
    Bonjour,

    je vous remercie pour vos réponses,
    @ Papy214 : j'évite la recherche séquentielle, elle est trop couteuse en temps, et la méthode FindLast, va me donner uniquement le dernier élément, alors que je dois parcourir la liste des entiers de la fin jusqu'au début,

    @calagan99 : j'ai pensé aussi à inverser la liste des données, mais je ne sais pas s'il y a une meilleure idée ! Une méthode prédéfinie peut être.

    Merci

    Bien cordialement

  6. #6
    Membre Expert

    Homme Profil pro
    Retraité
    Inscrit en
    Novembre 2007
    Messages
    3 530
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Novembre 2007
    Messages : 3 530
    Par défaut
    la liste est si longue que ça ?

    s'il faut trouver plusieurs éléments, tu as la méthode FindAll qui renvoie un tableau des éléments trouvés. Mais je ne sais pas si ça correspond à ta recherche

Discussions similaires

  1. [WD14] Recherche indices dans une liste
    Par celine37 dans le forum WinDev
    Réponses: 12
    Dernier message: 09/09/2009, 18h00
  2. Recherche assistée dans une liste
    Par tomy29 dans le forum Struts 1
    Réponses: 34
    Dernier message: 14/11/2008, 11h37
  3. Recherche rapide dans une liste
    Par jblecanard dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 02/09/2008, 23h53
  4. Recherche chaine dans une liste
    Par Clorish dans le forum Général Java
    Réponses: 7
    Dernier message: 28/03/2008, 11h49
  5. Recherche Element dans une liste
    Par hellodelu dans le forum ASP
    Réponses: 7
    Dernier message: 19/08/2005, 10h56

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo