Både Array och ArrayList är indexbaserade datastrukturer som ofta används i Java-program. Konceptuellt talas ArrayList internt av arrays, men förstå skillnaden mellan de två är nyckeln till att bli en bra Java-utvecklare. Det är ganska det grundläggande steget till att börja med, särskilt de nybörjare som just har börjat koda. Medan båda används för att lagra element i Java, som kan vara antingen primitiva eller objekt, har de en rättvis andel av skillnader vad gäller funktionalitet och prestanda. Den stora skillnaden mellan de två är att Array är statisk medan ArrayList är dynamisk i naturen. Denna artikel jämför de två på olika sätt så att du kan välja den ena över den andra.
En av de stora och märkbara skillnaderna mellan de två datastrukturerna är att Array är statisk i naturen vilket innebär att det är en datatyp med fast längd medan ArrayList är dynamisk i naturen vilket innebär att det är en datastruktur med variabel längd. I tekniska termer kan längden på Array inte ändras eller ändras när Array-objektet är skapat. Den innehåller sekventiell samling av element av samma datatyp. Arrays i Java fungerar annorlunda än de fungerar i C / C ++. ArrayList, å andra sidan, kan ändra storlek på sig och arraysna kan växa som de behövde. Eftersom det är en dynamisk datastruktur kan elementen läggas till och tas bort från listan.
Du kan inte skapa arrayer av generiska klasser av gränssnitt i Java så att arrays och generics inte går hand i hand vilket gör det omöjligt att skapa generisk array för den grundläggande orsaken till att arrays är kovarianta medan generics är invarianta. Medan Array är en datastruktur med fast längd innehåller den objekt av samma klass eller primitiva för den specifika datatypen. Så om du försöker lagra annan datatyp än den som angivits när du skapar Array-objekt, kastar det helt enkelt "ArrayStoreException". ArrayList stöder däremot Generics för att säkerställa typsäkerhet.
Primitiva datatyper som int, dubbel, lång och char är inte tillåtna i ArrayList. Det har snarare föremål och primitiva anses inte föremål i Java. Arrays kan å andra sidan hålla primitiva och objekt i Java eftersom det är en av de mest effektiva datastrukturerna i Java för lagring av objekt. Det är en aggregerad datatyp som är utformad för att hålla objekt som kan vara av samma eller olika typ.
För att få längden på arrayen måste koden få åtkomst till längdattributet eftersom man måste veta längden för att utföra operationer på Array. Medan ArrayList använder size () -metoden för att bestämma storleken på ArrayList, är det ganska annorlunda än att bestämma längden på Array. Metoden attribut size () (metoden) bestämmer antalet element i en ArrayList, som i sin tur är kapaciteten i ArrayList.
Till exempel:
offentlig klass ArrayLengthTest
statisk statisk tomt huvud (String [] args)
ArrayList arrList = new ArrayList ();
String [] items = "One", "Two", "Three";
för (String str: items)
arrList.add (str);
int size = items.size ();
System.out.println (storlek);
Array är en inbyggd programmeringskomponent i Java som skapas dynamiskt och de använder uppdragsoperatören för att hålla element, medan ArrayList använder add () attribut för att infoga element. ArrayList är en klass från samlingsramen i Java som använder en uppsättning specifika metoder för att komma åt och ändra elementen. Storleken på en ArrayList kan ökas eller minskas dynamiskt. Elementen i en array lagras i angränsande minnesplats och dess storlek förblir statisk hela tiden.
Medan båda datastrukturerna ger liknande prestanda som en ArrayList stöds av Arrays, har man en liten kant över en annan, mestadels när det gäller processorns tid och minnesanvändning. Låt oss säga, om du vet storleken på matrisen, kommer du sannolikt att gå med ArrayList. Det är dock lite snabbare än iterering över en ArrayList, men det är en iterering över en Array. Om programmet omfattar ett stort antal primitiva, kommer en array att göra betydligt bättre än ArrayList, både när det gäller tid och minne. Arrays är ett programmeringsspråk på låg nivå som kan användas vid uppsamling av implementeringar. Prestanda kan dock variera beroende på vilken operation du utför.
Array | Arraylist |
Array är en fast längddatastruktur vars längd inte kan ändras när ett arrayobjekt skapas. | ArrayList är dynamiskt i naturen vilket innebär att det kan ändra storlek på sig för att växa när det behövs. |
Storleken på en array förblir statisk under hela programmet. | Storleken på en ArrayList kan växa dynamiskt beroende på belastning och kapacitet. |
Den använder uppdragsoperatören för att lagra element. | Den använder attributet add () för att infoga element. |
Det kan innehålla primitiver samt föremål av samma eller olika datatyp. | Primitiva är inte tillåtna i ArrayList. Det kan bara innehålla objekttyper. |
Arrays och Generics går inte hand i hand. | Generics är tillåtna i ArrayList. |
Arrays kan vara mångdimensionella. | ArrayList är endimensionell. |
Det är en inbyggd programmeringskomponent där elementen lagras i angränsande minnesplatser. | Det är en klass från samlingsramen för Java där objekten aldrig lagras i angränsande platser. |
Längdvariabel används för att bestämma längden på arrayen. | Metoden Size () används för att bestämma storleken på ArrayList. |
Tar mindre minne än ArrayList för att lagra specificerade element eller objekt. | Tar mer minne än Array för att lagra objekt. |
Iterating över en array är snabbare än iterating över en ArrayList. | Iterating över en ArrayList är betydligt långsammare när det gäller prestanda. |
Medan vissa kanske tror att implementeringsrader i ett program kan få resultat snabbare än att göra detsamma med ArrayLists av den enkla anledningen att arrayer är en datastruktur med låg nivå, kan prestandan variera beroende på vilken operation du utför. Jo, längden på en Array är fixad, medan storleken på ArrayList kan ökas eller minskas dynamiskt, så ArrayList har en liten kant över Array när det gäller funktionalitet. Men trots skillnaderna delar de också vissa likheter. Båda är indexbaserade datastrukturer i Java som låter dig lagra objekt och de tillåter både nollvärden och dubbletter. Tja, om du känner till föremålens storlek på förhand borde du gå med en matris, och om du inte är säker på storleken, gå med ArrayList.