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 :

Questions sur un ArrayList


Sujet :

C#

  1. #1
    Membre averti
    Inscrit en
    Juillet 2010
    Messages
    30
    Détails du profil
    Informations personnelles :
    Âge : 35

    Informations forums :
    Inscription : Juillet 2010
    Messages : 30
    Par défaut Questions sur un ArrayList
    Bonjour,

    Plusieurs questions concernant les arraylist:
    1) Est-ce qu'il y a un moyen de supprimer tous les messages avant un certain messages? ou on est obligé de faire une boucle for?
    2) Est-ce qu'il y a un réajustage des indices quand on supprime un ou plusieurs messages? (si sur un tableau de 11 je supprime de 0 à 4 inclus, est ce que je vais avoir de 5 à 10 ou ça va réajuster de 0 à 5 ?)

    3) Je fais un arrayliste contenant des objets de trois attributs: ID, TC et un flag. Je voulais savoir comment marche le Sort? est-ce que je peux choisir de trier par ID (sui sont des int) ?

  2. #2
    Membre émérite Avatar de chamamo
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    588
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 588
    Par défaut
    Bonjour

    1) tu fais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    monArraylist.RemoveRange(2, 5);
    ça supprime 5 messages à partir du 3ème élément

    2) les indices sont réajustés quand on supprime un ou plusieurs messages

    3) ton object doit implementer l'interface IComparable

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    public class maClass: IComparable
    {
      public int ID
      {
        get;
        set;
      }
     
       public int CompareTo(object obj)
          {
             return  this.ID.CompareTo(((maClass)obj).ID);        
          }
     
    }

  3. #3
    Membre averti
    Inscrit en
    Juillet 2010
    Messages
    30
    Détails du profil
    Informations personnelles :
    Âge : 35

    Informations forums :
    Inscription : Juillet 2010
    Messages : 30
    Par défaut
    1) le problème avec Clear c'est que je crois que ça efface tout le tableau. Mais je crois avoir trouvé comment faire avec RemoveRange.

    3) je ne comprends pas ce que fais ton code ^^'


    EDIT: rien à voir, mais est-il possible de quitter un "foreach" avant la fin du parcours?

  4. #4
    Membre émérite Avatar de chamamo
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    588
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 588
    Par défaut
    oui j'avais mal compris ta premiere question au début, après j'ai corrigé

    Citation Envoyé par chamamo Voir le message
    Bonjour

    1) tu fais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    monArraylist.RemoveRange(2, 5);
    ça supprime 5 messages à partir du 3ème élément
    pour la 3eme question

    Citation Envoyé par chamamo Voir le message

    3) ton object doit implementer l'interface IComparable

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    public class maClass: IComparable
    {
      public int ID
      {
        get;
        set;
      }
     
       public int CompareTo(object obj)
          {
             return  this.ID.CompareTo(((maClass)obj).ID);        
          }
     
    }
    afin que ton ArrayList puisse trier ta liste d'objet,

  5. #5
    Membre averti
    Inscrit en
    Juillet 2010
    Messages
    30
    Détails du profil
    Informations personnelles :
    Âge : 35

    Informations forums :
    Inscription : Juillet 2010
    Messages : 30
    Par défaut
    Quand je fais le get et set j'ai cette erreur:

    'WindowsApplication4.ElemRegistre.m_ID.get' must declare a body because it is not marked abstract or extern...
    (même chose avec set)

    et:
    'WindowsApplication4.ElemRegistre' does not implement interface member 'System.IComparable.CompareTo(object)'
    (alors que j'ai fait comme t'as dit). Il faut utiliser une bibliothèque spéciale?

  6. #6
    Membre émérite Avatar de chamamo
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    588
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 588
    Par défaut
    pour la premiere erreur, tu es en C# 2.0, les propriétés auto-implémentées sont une nouveauté du C# 3.0

    pour la deuxième, tu es sur que tu as implémenter l'interface IComparable?

    essaie:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    public class ElemRegistre : IComparable
        {
            public ElemRegistre()
            {
            }
     
            private int m_ID;
            public int ID
            {
                get { return m_ID; }
                set { m_ID = value; }
            }
     
            public int CompareTo(object obj)
            {
                return this.ID.CompareTo(((ElemRegistre)obj).ID);
            }
     
        }
    ensuite :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    
    
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    123456789101112
     
    ArrayList liste = new ArrayList();
     
                ElemRegistre element = new ElemRegistre();
                element.ID = 10;
                liste.Add(element);
     
                element = new ElemRegistre();
                element.ID = 5;
                liste.Add(element);
     
                liste.Sort();

  7. #7
    Membre averti
    Inscrit en
    Juillet 2010
    Messages
    30
    Détails du profil
    Informations personnelles :
    Âge : 35

    Informations forums :
    Inscription : Juillet 2010
    Messages : 30
    Par défaut
    Merci beaucoup! Apparemment le problème venait de CompareTo (qui découlait peut être de get et set).
    En tout cas ça compile (je verrais un peu plus tard si ça marche bien)

  8. #8
    Membre averti
    Inscrit en
    Juillet 2010
    Messages
    30
    Détails du profil
    Informations personnelles :
    Âge : 35

    Informations forums :
    Inscription : Juillet 2010
    Messages : 30
    Par défaut
    Nouvelle question...

    Comment récupérer l'indice d'un objet de l'arraylist?

  9. #9
    Membre émérite Avatar de chamamo
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    588
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 588
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    int indice = liste.IndexOf(element);

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

Discussions similaires

  1. Petites questions sur les ArrayList
    Par dOuki dans le forum Collection et Stream
    Réponses: 4
    Dernier message: 23/05/2012, 19h17
  2. Question sur ArrayList
    Par sky88 dans le forum Collection et Stream
    Réponses: 9
    Dernier message: 23/03/2008, 10h47
  3. Question sur ArrayList
    Par pracede2005 dans le forum Collection et Stream
    Réponses: 7
    Dernier message: 22/05/2007, 22h59
  4. [Collections]question sur un ArrayList
    Par julrock dans le forum Collection et Stream
    Réponses: 5
    Dernier message: 10/08/2006, 11h41

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