ArrayList ja LinkedList toteuttavat molemmat List-rajapinnan ja ylläpitävät lisäysjärjestystä. Molemmat ovat ei-synkronoituja luokkia.
aseta näppäimistöön
ArrayList- ja LinkedList-luokkien välillä on kuitenkin monia eroja, jotka on annettu alla.
ArrayList | LinkedList |
---|---|
1) ArrayList käyttää sisäisesti a dynaaminen matriisi elementtien säilyttämiseen. | LinkedList käyttää sisäisesti a kaksoislinkitetty lista elementtien säilyttämiseen. |
2) Manipulointi ArrayListillä on hidas koska se käyttää sisäisesti taulukkoa. Jos jokin elementti poistetaan taulukosta, kaikki muut elementit siirtyvät muistissa. | Manipulointi LinkedListillä on nopeammin kuin ArrayList, koska se käyttää kaksoislinkitettyä listaa, joten muistissa ei tarvita bittisiirtoa. |
3) ArrayList-luokka voi toimia luettelona vain koska se toteuttaa vain luettelon. | LinkedList-luokka voi toimia listana ja jonona koska se toteuttaa List- ja Deque-liitännät. |
4) ArrayList on paremmin tallentamiseen ja käyttöön tiedot. | LinkedList on parempi manipulointiin tiedot. |
5) ArrayList-elementtien muistipaikka on vierekkäinen. | Linkitetyn luettelon elementtien sijainti ei ole tarttuva. |
6) Yleensä, kun ArrayList alustetaan, ArrayListille määritetään oletuskapasiteetti 10. | LinkedListissä ei ole oletuskapasiteettia. LinkedListissä tyhjä luettelo luodaan, kun LinkedList alustetaan. |
7) Tarkemmin sanottuna ArrayList on taulukko, jonka kokoa voidaan muuttaa. | LinkedList toteuttaa luettelorajapinnan kaksoislinkitetyn luettelon. |
Esimerkki ArrayLististä ja LinkedLististä Javassa
Katsotaanpa yksinkertainen esimerkki, jossa käytämme sekä ArrayListiä että LinkedListiä.
Tiedoston nimi: TestArrayLinked.java
import java.util.*; class TestArrayLinked{ public static void main(String args[]){ List al=new ArrayList();//creating arraylist al.add('Ravi');//adding object in arraylist al.add('Vijay'); al.add('Ravi'); al.add('Ajay'); List al2=new LinkedList();//creating linkedlist al2.add('James');//adding object in linkedlist al2.add('Serena'); al2.add('Swati'); al2.add('Junaid'); System.out.println('arraylist: '+al); System.out.println('linkedlist: '+al2); } }Testaa nyt
Lähtö:
arraylist: [Ravi,Vijay,Ravi,Ajay] linkedlist: [James,Serena,Swati,Junaid]
Muistettavat kohdat
Seuraavassa on joitain tärkeitä asioita, jotka on muistettava liittyen ArrayList- ja LinkedList-luetteloon.
- Kun lisäys- tai poistonopeus on suurempi kuin lukuskenaarioissa, valitse LinkedList. Toisaalta, kun lukuskenaarioiden tiheys on suurempi kuin lisäys- tai poistonopeus, ArrayList on etusijalla LinkedListiin nähden.
- Koska ArrayListin elementit on tallennettu kompaktimmin kuin LinkedList; siksi ArrayList on välimuistiystävällisempi kuin LinkedList. Siten välimuistin puuttumisen mahdollisuus on pienempi ArrayListissä verrattuna LinkedList-luetteloon. Yleisesti katsotaan, että LinkedList on huono välimuistissa.
- LinkedListin muisti on enemmän kuin ArrayList. Tämä johtuu siitä, että LinkedListissä meillä on kaksi ylimääräistä linkkiä (seuraava ja edellinen), koska niitä tarvitaan edellisen ja seuraavan solmun osoitteen tallentamiseen, ja nämä linkit kuluttavat ylimääräistä tilaa. Tällaisia linkkejä ei ole ArrayListissä.