Verschil tussen ArrayList en LinkedList in Java

Schrijver: Laura McKinney
Datum Van Creatie: 3 April 2021
Updatedatum: 15 Kunnen 2024
Anonim
LinkedList vs ArrayList in Java | Differences between ArrayList and LinkedList | Edureka
Video: LinkedList vs ArrayList in Java | Differences between ArrayList and LinkedList | Edureka

Inhoud


ArrayList en LinkedList zijn de Verzameling klassen, en beiden implementeren de Lijst koppel. De klasse ArrayList maakt de lijst die intern wordt opgeslagen in een dynamisch rangschikking die groter of kleiner wordt naarmate de elementen eraan worden toegevoegd of verwijderd. LinkedList maakt ook de lijst die intern is opgeslagen in een Dubbel Linked Lijst. Beide klassen worden gebruikt om de elementen in de lijst op te slaan, maar het grote verschil tussen de klassen ArrayList en LinkedList is dat ArrayList geeft willekeurige toegang tot de elementen in de lijst terwijl deze op een -Index gebaseerde data structuur. Aan de andere kant, de LinkedList staat geen willekeurige toegang toe omdat het geen indexen heeft om rechtstreeks toegang te krijgen tot elementen, het moet de lijst doorlopen om een ​​element uit de lijst op te halen of te openen.


Laten we wat meer verschillen bespreken tussen ArrayList en LinkedList met behulp van de onderstaande vergelijkingstabel.

  1. Vergelijkingstabel
  2. Definitie
  3. Belangrijkste verschillen
  4. Gevolgtrekking

Vergelijkingstabel

Basis voor vergelijkingArrayListLinkedList
basis- ArrayList geeft willekeurige toegang tot de elementen in de lijst.LinkedList staat geen willekeurige toegang toe tot de elementen in de lijst.
Data structuurDe interne structuur die wordt gebruikt voor het opslaan van elementen is de dynamische array.De interne structuur die wordt gebruikt om elementen op te slaan, is een dubbele koppelingslijst.
breidtArrayList breidt de klasse AbstarctList uit.LinkedList breidt AbstractSequentialList uit.
gereedschapAbstractList implementeert Lijstinterface.LinkedList implementeert List, Deque, Queue.
Toegang Toegang tot elementen in de lijst is sneller in ArrayList.Toegang tot elementen in de lijst is langzamer in LinkedList.
ManipulatieManipulatie naar elementen in de lijst is langzamer in ArrayList.Manipulatie naar elementen in de lijst is sneller in LinkedList.
GedragArraylList gedraagt ​​zich als List terwijl het list implementeert.LinkedList gedraagt ​​zich zowel als Lijst a als de Wachtrij omdat het zowel Lijst als Wachtrij implementeert.


Definitie van ArrayList

De AbstractList klasse wordt gedefinieerd door de Collectiekader. Het strekt zich uit AbstarctList en werktuigen Lijst koppel. ArrayList gebruikt dynamische array d.w.z. de array met variabele lengte als een interne gegevensstructuur om de elementen in de lijst op te slaan. De behoefte aan ArrayList ontstaat omdat de array in Java een vaste lengte heeft. Het kan dus niet groter of kleiner worden wanneer de elementen worden toegevoegd of verwijderd uit de array. U moet dus van tevoren de grootte van de vereiste array weten. Maar de matrixlijst die is geïmplementeerd met de klasse ArrayList kan groeien en kleiner worden naarmate de elementen worden toegevoegd aan of verwijderd uit de matrix.

U hebt toegang tot de matrixlijst die is geïmplementeerd met ArrayList willekeurig omdat ArrayList op indexbasis werkt. Dus als u de index kent, heeft u rechtstreeks toegang tot het element van de lijst. Er zijn drie constructors van ArrayList:

ArrayList () ArrayList (Verzameling <? Verlengt E> c) ArrayList (int capaciteit)

De eerste constructor implementeert een lege matrixlijst. De tweede constructor implementeert een matrixlijst die is geïnitialiseerd met de Verzameling c elementen. De derde constructor implementeert matrixlijst met de capaciteit voorzien in het argument. Als u met de ArrayList werkt, moet u soms de Collection ArrayList in een array omzetten. Dit kan door te bellen toArray ().

Definitie van LinkedList

Zoals ArrayList, LinkedList is ook een Verzameling klasse gebruikt dubbel gekoppelde lijst als een interne gegevensstructuur om de elementen in de lijst op te slaan. De klasse LinkedList wordt uitgebreid AbstractSequentialList en implementeert de Lijst, Deque en Wachtrij interfaces. De gekoppelde lijst die is geïmplementeerd met LinkedList is niet willekeurig toegankelijk. Als u een element uit de lijst wilt ophalen, moet u de lijst herhalen om dat element te doorzoeken.

Er zijn twee constructors in de klasse LinkedList.

LinkedList () LinkedList (Verzameling <? Breidt E> c) uit

De eerste constructor maakt een lege gekoppelde lijst. De tweede constructor maakt een gekoppelde lijst, geïnitialiseerd met de elementen van Verzameling c.

In LinkedList is het manipuleren van de lijst eenvoudig en snel. Dit komt omdat als u een element in de lijst toevoegt of verwijdert, u de elementen niet hoeft te verplaatsen zoals in ArrayList. Maar de toegang is langzamer omdat het geen index heeft voor directe toegang tot de elementen.

  1. De lijst geïmplementeerd door de ArrayList is willekeurig toegankelijk omdat ArrayList de op index gebaseerde gegevensstructuur van de array overneemt. Aan de andere kant is de lijst die is geïmplementeerd door de LinkedList niet willekeurig toegankelijk omdat u voor het ophalen of openen van een bepaald element in de lijst de lijst moet doorlopen.
  2. De interne gegevensstructuur die door ArrayList wordt gebruikt om de elementen van de lijst op te slaan, is een dynamische array die kan groeien of krimpen als de elementen worden toegevoegd of verwijderd uit de lijst. De interne gegevensstructuur die door de LinkedList wordt gebruikt om de elementen in de lijst op te slaan, is echter dubbel gekoppelde lijst.
  3. De ArrayList verlengt de AbstractList klasse die ook een Collectieklasse is, terwijl de klasse LinkedList wordt uitgebreid AbstractSequentialList klasse die weer een collectieklasse is.
  4. ArrayList-klasse werktuigen Lijst interface terwijl de klasse LinkedList implementeert Lijst, Wachtrijen Deque interfaces.
  5. Toegang tot elementen uit de lijst die is geïmplementeerd met ArrayList is sneller omdat het een op index gebaseerde gegevensstructuur heeft. Aan de andere kant is er geen op index gebaseerde structuur in de lijst geïmplementeerd doorLinkledList. Daarom wordt een iterator op de lijst toegepast om het element te bereiken dat toegang heeft tragere in LinkedList.
  6. Manipulatie is Manipulatie in de lijst die is geïmplementeerd met behulp van ArrayList, omdat telkens wanneer een element wordt toegevoegd aan of verwijderd uit de lijst, de elementen in de lijst worden verschoven om aan de wijziging te voldoen. Aan de andere kant is manipulatie sneller in de lijst die door LinkedList is geïmplementeerd, omdat het niet nodig is om elementen in de lijst te verplaatsen bij toevoeging of verwijdering van de elementen uit de lijst.
  7. ArrayList werkt als een lijst omdat het List-interface implementeert, terwijl de LinkedList fungeert als lijst en wachtrij omdat het zowel Lijst als Wachtrij implementeert.

Gevolgtrekking:

Wanneer de elementen in de lijst regelmatig worden toegevoegd of verwijderd, moet LinkedList worden gebruikt, omdat deze beter presteert tijdens manipulatie. Als frequent zoeken op de lijst wordt toegepast, is de ArrayList de beste keuze, omdat deze beter presteert bij toegang tot elementen uit de lijst.