Una llista és una estructura dinàmica en la qual es pot afegir elements sense tantes restriccions. És habitual que es puguem introduir noves dades en tots dos extrems, així com entre dos elements existents, o bé fins i tot de forma ordenada, de manera que cada nova dada s'introdueix automàticament en la posició adequada perquè tots ells queden en ordre.
En el cas de C#, tenim dues variants especialment útils: una llista als elements de la qual es pot accedir com als d'un array ("ArrayList") i una llista ordenada ("SortedList").
ArrayList
En un ArrayList, podem afegir dades en l'última posició amb "Add", inserir en qualsevol altra amb "Insert", recuperar qualsevol element usant claudàtors (igual que fèiem amb els "arrays"), o fins i tot ordenar tota la llista amb "Sort" (si les dades que hi ha guardats són "fàcils de comparar", però no servirà si són dades més complexes, com un "struct"). Anem a veure alguns dels mètodes podem utilitzar:
Nom
|
Descripció
|
Add(Object)
|
Agrega un objecte al final de ArrayList.
|
Clear()
|
Lleva tots els elements de ArrayList.
|
Clone()
|
Crea una còpia superficial de la col·lecció ArrayList.
|
Contains(Object)
|
Determina si un element es troba en ArrayList.
|
CopyTo(Array)
|
Copia la ArrayList completa en una Array unidimensional compatible, començant en el principi de la matriu de destinació.
|
GetType()
|
Obté el Type de la instància actual.(Heretat de Object).
|
Insert(Int32, Object)
|
Insereix un element en ArrayList, en l'índex especificat.
|
RemoveAt(Int32)
|
Lleva l'element situat en l'índex especificat de ArrayList.
|
Reverse()
|
Inverteix l'ordre dels elements en la ArrayList completa.
|
Sort()
|
Ordena tots els elements de ArrayList.
|
Exemple:
using System; using System.Collections; public class SamplesArrayList { public static void Main() { // Crea i inicialitza un nou ArrayList. ArrayList meuAL = new ArrayList(); meuAL.Add("Hola"); meuAL.Add("Món"); meuAL.Add("!"); // Visualitza les propietats i valors del ArrayList. Console.WriteLine( "meuAL" ); Console.WriteLine( " Recompte: {0}", meuAL.Count ); Console.WriteLine( " Capacitat: {0}", meuAL.Capacity ); Console.Write( " Valors:" ); PrintValues( meuAL ); } public static void ImprimirValors( IEnumerable meuaLlista ) { foreach ( Object obj in meuaLlista ) Console.Write( " {0}", obj ); Console.WriteLine(); } } /* Sortida del codi: meuAL Recompte: 3 Capaacitat: 4 Valors: Hola Món ! */
Exercici: Concessionari de vehicles: Cotxes i Motos
El
programa
haurà
de llegir
un fitxer
que conté vehicles
(cotxes
i motos) emmagatzemats
de la següent
manera:
En llegir el fitxer s'haurà d'emmagatzemar cada vehicle en una llista genèrica de la classe Vehicle (classe pare) amb els atributs descripció, preu i categoria, cada vehicle serà un Cotxe o una Moto (classes filles) segons corresponga.
(Per
diferenciar-los en la descripció
de cada vehicle
sempre
ha de contenir
la paraula
cotxe o moto respectivament
com
es pot
veure
en el fitxer
d'exemple).
Per
assignar
una categoria
a cada vehicle
s'ha
de crear una funció
que reba el preu de cada vehicle
i aquesta
assigne una categoria
segons
aquests
criteris:
Baixa
<= 3000
Mitjana
> 3000 i Mitjana
<= 10000
Alta
> 10000
Una
vegada tenim
la llista
amb
tots
els
vehicles
emmagatzemats
hem
de preguntar a l'usuari
si vol
visualitzar
cotxes
o motos i que categoria.
Una vegada
tenim
aquestes
dues dades
el programa haurà
de mostrar a l'usuari
els
vehicles
que compleixen
aquestes condicions.
Exemple:
Per
a això
hem
de consultar en la llista
de vehicles
el tipus
de vehicle
Cotxe
o Moto, podem
utilitzar
GetType
sobre un dels
elements
de la nostra
llista
de vehicles
(en aquest
cas no contemplem
l'opció
de mirar la descripció).
A més
de consultar la categoria
de cada vehicle.
Exemple:
meusVehicles
[i] GetType()
== typeof(Cotxe)
meusVehicles[i].
GetCategoria()
Cap comentari:
Publica un comentari a l'entrada