Diferència clau: llista vs conjunt
La majoria dels llenguatges de programació utilitzen matrius per emmagatzemar un conjunt de dades del mateix tipus. Un dels principals inconvenients de les matrius és que, un cop declarada la mida de la matriu, no es pot modificar. Si el programador vol emmagatzemar un valor que superi la mida de la matriu, hauria de crear una nova matriu i copiar els elements existents a la nova matriu. En aquestes situacions, es poden utilitzar col·leccions. És possible afegir elements, eliminar elements i moltes altres operacions amb el suport de col·leccions. Hi ha diferents tipus de col·leccions disponibles en llenguatges de programació com Java. List i Set són interfícies de la jerarquia de col·leccions. La interfície base per a altres interfícies és Col·lecció. La diferència clau entre List i Set és que List admet l'emmagatzematge del mateix element diverses vegades, mentre que Set no admet l'emmagatzematge del mateix element diverses vegades. Per tant, un conjunt no permet la duplicació.
Què és la llista?
La llista és una interfície que amplia la interfície de la col·lecció. Hi ha diversos mètodes a la interfície de Col·lecció. El mètode add ajuda a afegir un element. El "mètode d'eliminació" és eliminar un element. Hi ha "addAll method" per afegir diversos elements mentre que "removeAll method" per eliminar els elements de la col·lecció. El mètode contains ajuda a trobar si un objecte específic està present a la llista o no. El 'containsAll' és per trobar si hi ha un conjunt d'objectes presents a la col·lecció. El mètode iterador s'utilitza per recórrer els elements de la llista. Com que List amplia la col·lecció, tots els mètodes de la col·lecció pertanyen a la llista. A part d'aquests mètodes, la llista té mètodes com ara get i set. El programador pot obtenir un valor en un índex específic mitjançant el mètode get. El programador pot establir un valor en un índex específic mitjançant el mètode set. L'"indexOf" s'utilitza per trobar l'índex d'un element.
En una llista, les operacions es poden realitzar segons la posició. El programador pot proporcionar l'element de dades que s'ha d'afegir a l'índex. Així que s'afegirà a l'índex específic. Si el programador no dóna un índex, l'element s'afegirà al final de la llista. També manté l'ordre inserit. Si s'afegeix l'element 1 i després s'afegeix l'element2, llavors l'element1 estarà abans de l'element2.
Figura 01: Llista i configura
ArrayList, LinkedList, Vector són algunes classes que implementen List. En una ArrayList, accedir a un element és ràpid, però la inserció i la supressió són més baixes. ArrayList no és segur per a fils. L'accés a la mateixa ArrayList des de diversos fils pot no donar el mateix resultat. En una LinkedList, els elements estan enllaçats tant cap enrere com cap endavant. La inserció i la supressió d'elements amb una LinkedList és més ràpid que la ArrayList. El LinkedList implementa List i Queue Both. Vector és similar a ArrayList, però és segur perquè tots els mètodes estan sincronitzats.
Què es defineix?
Set és una interfície que amplia la interfície de Col·lecció. Com que la interfície Set amplia la Col·lecció, tots els mètodes de Col·lecció també pertanyen a Set. Un conjunt no admet valors de duplicació. Per tant, el programador no pot emmagatzemar el mateix element dues vegades. Manté un conjunt únic d'elements. La interfície SortedSet amplia la interfície Set. SortedSet manté els elements en ordre ordenat. La interfície NavigableSet amplia SortedSet. El NavigableSet ofereix mètodes de navegació com ara més baix, terra, sostre, etc.
HashSet, LinkedHashSet i TreeSet són algunes classes que implementen la interfície Set. El HashSet implementa la interfície Set. No manté l'ordre inserit. Si els valors s'insereixen com a, x, b, es pot emmagatzemar com a, x, a, b. El LinkedSet manté l'ordre inserit. Si els elements s'insereixen en ordre a, x, b, l'ordre d'emmagatzematge serà a, x, b. El TreeSet implementa Set i NavigableSet. No manté l'ordre d'inserció sinó que emmagatzema els elements en l'ordre ordenat. Si l'ordre inserit és a, c, b, els elements s'emmagatzemaran com a, b, c. Tots els HashSet, LinkedHashSet i TreeSet no tindran cap element duplicat.
Quines semblances hi ha entre llista i conjunt?
- Tant les interfícies de llista com de conjunt amplien la interfície de col·lecció.
- Tant d'operacions de suport de llista com de configuració, com ara afegir o eliminar elements.
Quina diferència hi ha entre llista i conjunt?
Llista vs conjunt |
|
List Interface és la subinterfície de la col·lecció que conté mètodes per realitzar operacions com ara inserir, suprimir segons l'índex. | Set Interface és una subinterfície de Collection que conté mètodes per dur a terme operacions com ara inserir i suprimir elements mantenint els elements únics. |
Classes | |
ArrayList, Vector i LinkedList són classes que implementen la interfície List. | HashSet, LinkedHashSet i TreeSet són classes que implementen la interfície Set. |
Duplicació d'elements | |
List admet la duplicació d'elements. | Set no admet la duplicació d'elements. Els elements són únics. |
Resum: llista vs conjunt
Les col·leccions s'utilitzen per emmagatzemar elements de manera dinàmica. Els llenguatges de programació com Java ofereixen una interfície de col·lecció. List i Set són dues interfícies que pertanyen a la interfície Col·lecció. Ambdues interfícies amplien la col·lecció. En aquest article es parla de la diferència entre llista i conjunt. La diferència clau entre List i Set és que List admet l'emmagatzematge del mateix element diverses vegades, mentre que Set no admet l'emmagatzematge del mateix element diverses vegades. El conjunt manté sempre elements únics.