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 :

Collection, Dictionnary ou autres Que choisir?


Sujet :

C#

  1. #1
    Membre habitué Avatar de jubourbon
    Homme Profil pro
    Inscrit en
    Octobre 2008
    Messages
    540
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 540
    Points : 189
    Points
    189
    Par défaut Collection, Dictionnary ou autres Que choisir?
    Bonjour,

    Je voudrais créer une collection d'objet, qui me permette ensuite d'accéder aux objet via un index.
    Le Dictionary répond parfaitement à ca, mais j'ai lu que les dictionnaires étaient efficace jusqu'à une 15 d'objets, au delà bof.

    Quel autre type de collection permet de faire cela?

    Par avance merci.

  2. #2
    Membre éprouvé
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Juillet 2007
    Messages
    693
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Juillet 2007
    Messages : 693
    Points : 1 187
    Points
    1 187
    Par défaut
    Bonjour,

    Tu veux accéder à tes objets par leur index ou par une clé ?

    Si c'est par l'index, il y a les List<T> et affiliés, les tableaux, ...
    Si c'est par une clé, il y a les dictionnaires, les HashTables (je sais plus si c'est encore utilisé) (entre les deux il me semble que les dictionnaires sont plus performants quand la taillle est faible et ça s'inverse ensuite).

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 3
    Points : 6
    Points
    6
    Par défaut
    Bonjour

    Tu peux utilisé un dictionnaire bien au delà de 15 objets. C'est même la son utilité, retrouvé rapidement un élément parmi une liste.

    Sinon comme autre type de collection tu as la HashTable qui n'est qu'un dictionnaire non typé. C'est un peu plus lent car tu perdra du temps a caster tes objet à chaque fois.
    Si tes objets sont du même type préfère un dictionnaire.

  4. #4
    Expert éminent sénior Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 172
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 172
    Points : 25 112
    Points
    25 112
    Par défaut
    un list indexe une collection par un nombre ordonné
    un dictionnary index une collection sur un type voulu et non ordonné (tu peux choisir un string, ou meme une classe)
    le dictionnary retrouvera directement l'instance car il hashe la clé

    et tu peux mettre des dizaines de milliers d'instance dans les 2 (ou meme les autres collections de system.collections), pas de soucis de performances

  5. #5
    Membre habitué Avatar de jubourbon
    Homme Profil pro
    Inscrit en
    Octobre 2008
    Messages
    540
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 540
    Points : 189
    Points
    189
    Par défaut
    Merci pour vos réponses.

    Citation Envoyé par ostenhard Voir le message
    Si c'est par l'index, il y a les List<T> et affiliés, les tableaux, ...
    C'est effectivement par l'index que je veux y accéder, mais comment fait on avec une list <T>, je n'ai pas trouvé la méthode.

  6. #6
    Expert éminent sénior Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 172
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 172
    Points : 25 112
    Points
    25 112
    Par défaut
    l'index du list est automatique

    list.Add(un_element) => list(0) pour y accéder
    list.Add(un_autre_element) => list(1) pour y accéder


    si tu veux gérer l'index, il faut un dictionnaire
    dico.add(un_element.index, un_element)
    dico(x) retourne alors l'élément ayant x pour clé

    /// attention je vais du vb.net et les () sont parfois des [] en c# apparemment

  7. #7
    Membre habitué Avatar de jubourbon
    Homme Profil pro
    Inscrit en
    Octobre 2008
    Messages
    540
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 540
    Points : 189
    Points
    189
    Par défaut
    Merci Pol63, je cherchais une méthode alors que ca s'utilise comme un tableau.

  8. #8
    Expert éminent sénior Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 172
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 172
    Points : 25 112
    Points
    25 112
    Par défaut
    Citation Envoyé par jubourbon Voir le message
    Merci Pol63, je cherchais une méthode alors que ca s'utilise comme un tableau.

    ca doit être une Default Property Item as T ^^

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Que choisir : Delphi ou C++ ?
    Par Gwipi dans le forum Débats sur le développement - Le Best Of
    Réponses: 30
    Dernier message: 18/07/2010, 11h43
  2. Que choisir ? Delphi ou Java ?
    Par Jean-Yves dans le forum Débats sur le développement - Le Best Of
    Réponses: 89
    Dernier message: 19/04/2008, 15h40
  3. [VB.Net] Que choisir tableaux ou collections ?
    Par Pasiphae dans le forum VB.NET
    Réponses: 2
    Dernier message: 16/03/2006, 15h35
  4. [Collections] Que choisir (tableau ou Map)
    Par thomine dans le forum Collection et Stream
    Réponses: 6
    Dernier message: 22/06/2005, 16h25
  5. Que choisir ? Visual C++ ou Borland c++ builder ?
    Par ashram dans le forum Débats sur le développement - Le Best Of
    Réponses: 27
    Dernier message: 24/02/2003, 14h39

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