Lad os studere nogle andre forskelle ved hjælp af sammenligningstabel vist nedenfor.
Sammenligningstabel
Grundlag for sammenligning | ArrayList | Vektor |
---|---|---|
Grundlæggende | ArrayList-klassen er ikke synkroniseret. | Vector klasse er synkroniseret. |
Legacy klasse | ArrayList er en standard Collection klasse. | Vector er en ældre klasse, der er re-engineered til at understøtte kollektionsklassen. |
Klasseerklæring | klasse ArrayList | klasse Vector |
omfordeling | Når det ikke er angivet, øges en ArrayList med halvdelen af dens størrelse. | Når det ikke er angivet, øges en vektor for at fordoble dens størrelse. |
Ydeevne | Da ArrayList er usynkroniseret, fungerer den hurtigere end Vector. | Som Vector er synkroniseret, fungerer den langsommere end ArrayList. |
Tælling / Iterator | ArrayList bruger Iterator-grænsefladen til at krydse de objekter, der er gemt i ArrayList. | Vector bruger opregning samt iterator interface til at krydse objekterne gemt i vektorer. |
Definition af ArrayList
ArrayList tilhører listen over standardindsamlingsklasser. Klassen ArrayList er defineret inde i java.util- pakken, den udvider abstraktlisteklassen, som også er en standardindsamlingsklasse, og den implementerer også List, en grænseflade defineret i samlingsinterfaces. I Java er et standard array altid af fast længde. Det betyder engang skabt; det vokser ikke dynamisk eller krympes i størrelse. Så du bør have forudgående kendskab til længden af det array du bruger. Men nogle gange kan det ske, at den nødvendige længde er afsløret ved kørselstid, så for at håndtere denne slags situation introducerede java ArrayList.
ArrayListen er klassen, der bruges til dynamisk oprettelse af et array, der indeholder referencerne til objekterne. Denne array kan vokse i størrelse efter behov. Klassedeklarationen er som følger:
klasse ArrayList
Her angiver E, hvilken type objekter et array vil holde. Opstillingen er af variabel længde, og den øges og falder i størrelse, når objekter tilføjes eller fjernes fra listen.
ArrayListen er ikke synkroniseret, hvilket betyder, at mere end en tråd kan fungere på arrayet på samme tid. Hvis en tråd f.eks. Tilføjer en objektreference til arrayet, og en anden tråd fjerner en objektreference fra det samme array på samme tid. Oprettelsen af et dynamisk array ved hjælp af ArrayList-klassen:
ArrayList S1 = Ny ArrayList (); System.out.println ("Startstørrelse S1:" + S1.size ()); S1.add ( "T"); S1.add ( "C"); S1.add ( "H"); S1.add (1, "E"); System.out.println ("Efter tilsætning S1 indeholder:" + S1); System.out.println ("S1-størrelse efter tilsætning:" + S1.size ()); S1.remove ("T"); S1.remove (2); System.out.println ("Efter sletning S1 indeholder:" + S1); System.out.println ("S1 størrelse efter sletning:" + S1.size ()); // OutputInitial størrelse S1: 0 Efter tilsætning indeholder S1: [T, E, C, H]; Størrelse på S1 efter tilsætning: 4 Efter sletning indeholder S1: [E, H] Størrelse på S1 efter sletning: 2
I ovenstående kode kan du se det; Jeg oprettede en række objekter af streng type. Jeg tilføjede nogle objekter til array S1 ved hjælp af add () -metoden og fjernede senere nogle objekter ved hjælp af remove () -metoden. Du kan observere, hvis du ikke angiver den oprindelige størrelse af arrayet, vil den være af '0' længde. Som du kan se, vokser arrayet og krympes i størrelse, når du tilføjer og sletter elementerne.
Definition af Vector
Vector er en ældre klasse, som er reengineered til at understøtte kollektionsklassen i Collection Framework hierarkiet. Vektor klassen er også defineret i java.util pakke, udvidet af AbstractList klasse og implementeret af List interface. Vector-klassen er erklæret som følger:
klasse Vector
Her definerer E den type objekt, der vil blive gemt i en matrix. Et array oprettet ved hjælp af Vector klasse er af variabel længde. Det øger dobbelt størrelse, hvis stigningen ikke er angivet. Lad os forstå oprettelsen af array ved hjælp af Vector.
Vector V = Ny vektor (1, 1); V.addElement ( "Tech"); V.addElement ( "Forskelle"); System.out.println ("Kapacitet efter 2 tilføjelse:" + V.capacity ()); V.addElement ( "Mellem"); V.addElement ( "Vektorer"); System.out.println ("Aktuel kapacitet:" + V.capacity ()); // Outputkapacitet efter 2 tilføjelse: 2 Nuværende kapacitet: 4
I ovenstående kode kan du se det, jeg nævnte især størrelsen og stigningsværdien i henholdsvis Vector-konstruktøren og erklærer en række strengobjekter. Derfor kan du bemærke, at som grænsen for array-afslutninger øges den med den værdi, der leveres til konstruktøren under angivelsen.
Nøgleforskelle mellem ArrayList og vektorer
- Flere tråde kunne fungere på ArrayList på samme tid, og det betragtes derfor som usynkroniseret . I modsætning til ArrayList kan kun en enkelt tråd operere på en vektor ad gangen; derfor kaldes det synkroniseret .
- I en tidlig version af Java ville nogle klasser og grænseflader tilvejebringe metoder til at gemme objekter, de blev kaldt Ældre klasser Vector er en blandt klassen Legacy i Java. Senere blev disse arv klasser reengineered til at understøtte Collection klasse, mens ArrayList klasse er en standard Collection Class.
- Når grænsen for en matrix er fuldt udnyttet og en ny objekt tilføjes ved siden af det udmattede array, vokser størrelsen i begge tilfælde, dvs. i ArrayList såvel som i Vector, men forskellen er, at i ArrayList, hvis ikke specificeret størrelsen øges med 50% af det nuværende array, mens i Vector-arrayet fordobles i størrelse, hvis stigningsværdien ikke er angivet.
- Vector bruger opregning samt iterator til at krydse en matrix, mens en ArrayList kun bruger iterator til at krydse en matrix.
- Da ArrayList er usynkroniseret og mange tråde kan fungere på det, er dens ydeevne bedre end Vector, hvor kun en tråd kan fungere ad gangen.
ligheder:
- ArrayList og Vector begge er defineret i java.util pakke.
- ArrayList og Vector begge udvider AbsractList klasse.
- ArrayList og Vector både implementerer Liste interface.
- ArrayList og Vectors begge bruges til at skabe et dynamisk array, der vokser efter behov.
- ArrayList og Vector indeholder begge objektreferencer.
Konklusion:
Jeg konkluderer med at bruge ArrayList er bedre end at bruge Vector, da den udfører hurtigere og bedre.