La classe arraylist

Soyez le premier à donner votre avis sur cette source.

Vue 35 210 fois - Téléchargée 625 fois

Description

Un programma d'exemple pour vous montrer comment utiliser cette classe tres utile, qui peut remplacer les tableaux d'objets dans bien des cas ...

Source / Exemple :


using System;
using System.Collections; // CONTIENT LE CLASSE ArrayList

namespace ArrayListProject
{
	class MainClass
	{
		[STAThread]
		static void Main(string[] args)
		{
			ArrayList a = new ArrayList();
			ArrayList b = new ArrayList();

			byte mybyte = 67;
			a.Add(mybyte); // ajoute un OBJET a l'arraylist
			// etant donner que toute classe herite indirectement
			// de la classe object, il n'est pas necessaire de caster ici
			// comme ca : a.Add((object)mybyte);
			a.Add('k');

			// ajoute une arraylist a une autre
			b.AddRange(a);

			Console.Out.WriteLine("Contenu de b :");
			// on peut parcourir les elements d'une arraylist de la sorte
			foreach (object o in b)
				Console.Out.WriteLine(o.ToString());

			// verifie si une référence existe dans l'arraylist
			if (b.Contains(mybyte))
				Console.Out.WriteLine("b contient mybyte");
			if (a.Contains(mybyte))
				Console.Out.WriteLine("a contient mybyte");

			// Count est une propriété en lecture seule
			Console.Out.WriteLine("Capacity : "+b.Capacity);
			Console.Out.WriteLine("Number of elements : "+b.Count);

			Console.Out.WriteLine("Ajout de 50 elements a b");
			for (int i = 0;i<50;i++)
				b.Add(i);

			Console.Out.WriteLine("(b) Capacity : "+b.Capacity);
			Console.Out.WriteLine("(b) Number of elements : "+b.Count);
			// on demontrera ainsi que la capacité si elle n'est pas
			// spécifiée à la création de l'ArrayList prends une valeur dynamique
			// qui est le multiple de 2 le plus proche superieur au nombre d'elements
			// presents dans la liste.
			b.TrimToSize(); // si la capacité de larraylist est de 5 et qu'il y a 2 éléments
							// alors la capacité devient 2
			Console.Out.WriteLine("triming de taille");
			Console.Out.WriteLine("(b) Capacity : "+b.Capacity);
			Console.Out.WriteLine("(b) Number of elements : "+b.Count);
			
			Console.Out.WriteLine("(b) nsertion d'un element a la position 1");
			b.Insert(1,"salut les amis"); // insertion d'un element dans une arraylist

			Console.Out.WriteLine("Les 3 premiers elements de b sont :");
			for (int i=0;i<3;i++)
				Console.Out.WriteLine(b[i]);

			Console.Out.WriteLine("Insertion de a à la position 1 de b");
			b.InsertRange(1,a); // insertion d'une arraylist dans une autre
			
			Console.Out.WriteLine("Les 5 premiers elements de b sont :");
			for (int i=0;i<5;i++)
				Console.Out.WriteLine(b[i]);

			b.Reverse(); // retourne la liste

			Console.Out.WriteLine("contenu de b inversé :");
			foreach (object o in b)
				Console.Write(o.ToString()+" ");
			Console.WriteLine();
			
			Console.In.ReadLine();
		}
	}
}

Codes Sources

A voir également

Ajouter un commentaire

Commentaires

cs_Pedrosa
Messages postés
43
Date d'inscription
lundi 3 juillet 2006
Statut
Membre
Dernière intervention
2 juin 2008
-
Merci pour ton tuto.

Ça m'a été util.
gg00xiv
Messages postés
656
Date d'inscription
mercredi 22 août 2001
Statut
Membre
Dernière intervention
11 mars 2005
12 -
- en mettant differents types d'objets on peut faire ainsi pour les distinguer :
if (a[i] is int) // ... par exemple

- a partir de .. pour des raisons ... g plus rien compris, peux-tu reformuler ou bien me donner un exemple me permettant de mieux cerner le problème ?
cs_vieuxLion
Messages postés
455
Date d'inscription
samedi 26 octobre 2002
Statut
Membre
Dernière intervention
6 avril 2004
7 -
Ouais, c'est bien de remarquer que l'ArrayList permet de stocker n'importe quel objet, mais ce n'est vraiment pas la bonne façon de s'en servir... car comment récupérer les objets stockés s'ils sont de types différents ? Il faut les recaster manuellement dans leurs types d'origine... pour pouvoir profiter de leurs méthodes et propriétés !
Il convient généralement de créer une ArrayList PAR type d'objet.
Autre remarque : pour des raisons d'abstraction, il est recommandé de déclarer la référence comme une interface IList, ainsi, pour des raisons de performances, il est plus simple de changer le type de conteneur (il suffit de changer le 'new' contre une autre implémentation de IList et le reste du code n'est pas impacté).

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.