Matrius vs Arraylists
Les matrius són l'estructura de dades més utilitzada per emmagatzemar una col·lecció d'elements. La majoria dels llenguatges de programació ofereixen mètodes per declarar fàcilment matrius i accedir als elements de les matrius. Una llista de matrius es pot veure com una matriu dinàmica, que pot créixer de mida. Per aquest motiu, el programador no necessita saber la mida de la llista de matrius quan l'està definint.
Què són les matrius?
A la figura 1, és un fragment de codi que s'utilitza normalment per declarar i assignar valors a una matriu. La figura 2 mostra com es veuria una matriu a la memòria.
valors int[5]; valors[0]=100; valors[1]=101; valors[2]=102; valors[3]=103; valors[4]=104; |
Figura 1: codi per declarar i assignar valors a una matriu
100 | 101 | 102 | 103 | 104 |
Índex: 0 | 1 | 2 | 3 | 4 |
Figura 2: matriu emmagatzemada a la memòria
A sobre del codi, defineix una matriu que pot emmagatzemar 5 nombres enters i s'hi accedeix mitjançant els índexs del 0 al 4. Una propietat important d'una matriu és que tota la matriu s'assigna com un únic bloc de memòria i cada element obté el seu espai propi a la matriu. Un cop definida una matriu, la seva mida es fixa. Per tant, si no esteu segur de la mida de la matriu en el moment de la compilació, haureu de definir una matriu prou gran per estar al costat segur. Però, la majoria de vegades, en realitat farem servir menys elements del que hem assignat. Per tant, es malgasta una quantitat considerable de memòria. D' altra banda, si la "matriu prou gran" no és realment prou gran, el programa es bloquejaria.
Què són les llistes de matrius?
Una llista de matrius es pot veure com una matriu dinàmica, que pot augmentar de mida. Per tant, les llistes de matrius són ideals per utilitzar-les en situacions en què no coneixeu la mida dels elements necessaris en el moment de la declaració. A Java, les llistes de matrius només poden contenir objectes, no poden contenir tipus primitius directament (podeu posar els tipus primitius dins d'un objecte o utilitzar les classes d'embolcall dels tipus primitius). En general, les llistes de matrius es proporcionen amb mètodes per dur a terme la inserció, la supressió i la cerca. La complexitat temporal d'accedir a un element és o(1), mentre que la inserció i la supressió tenen una complexitat temporal de o(n). A Java, les llistes de matrius es poden recórrer mitjançant bucles foreach, iteradors o simplement utilitzant els índexs.
Quina diferència hi ha entre Arrays i Arraylists
Tot i que les matrius i les llistes de matrius són similars en el sentit que totes dues s'utilitzen per emmagatzemar col·leccions d'elements, difereixen en com es defineixen. La mida de la matriu s'ha de donar quan es defineix una matriu, però podeu definir una llista de matrius sense saber la mida real. Podeu afegir elements a una llista de matrius després de definir-la i això no és possible amb les matrius. Però a Java, les llistes de matrius no poden contenir tipus primitius, però les matrius es poden utilitzar per contenir tipus primitius. Però si necessiteu una estructura de dades que pugui variar la seva mida, la llista de matrius seria la millor opció.