Võrdluskaart
Võrdluse alus | Nimekiri | ArrayList |
---|---|---|
Põhiline | Loend on liides | ArrayList on tavaline kollektsiooniklass. |
Süntaksi | liidese loend | klass ArrayList |
Laiendage / rakendage | Nimekirja liides laiendab kogumise raamistikku. | ArrayList laiendab AbstractListi ja rakendab List Interface'i. |
Nimediruum | System.Collections.Generic. | System.Collections. |
Töö | Seda kasutatakse nende elementide (objektide) loendi loomiseks, mis on seotud nende indeksnumbritega. | ArrayListi kasutatakse objektide sisaldava dünaamilise massiivi loomiseks. |
Nimekirja määratlus
Loetelu on liides, mis laiendab kogumise raamistikku. Loendiliides kirjeldab järjestikuste elementide kogumit. Loendiliidest rakendatakse järgmiste standardsete kogumisklassidega nagu ArrayList, LinkedList, CopyOnWriteArrayList, Vector, Stack . Loendiliidesel on elemendid, mis on seotud nende indeksinumbritega. Loendi elementi saate kasutada loendis oleva asukoha (indeks) järgi. Nimekirja liidesega loodud loend algab nullil põhineva indeksiga.
Lisaks kogumise raamistiku poolt päritud meetoditele määratleb Listi liides ka mõne oma meetodi. Loendiliidese poolt lisatud meetodid on: lisada (int, E) ja addAll (int, Collection) . Need meetodid lisavad loendisse elemendi oma indeksi järgi. Loetelus olevad meetodid võivad visata erandit nagu UnsupportedOperationException, kui meetod ei saa nimekirja muuta. Kui loendis olev üks objekt on loendis mõne teise objektiga kokkusobimatu, siis visatakse ClassCastException.Null-elemendid ei ole loendis lubatud, kui proovite loendis nullobjekti sisestada, NullPointerException on visatud.
Elemendi saab loendist, kasutades meetodit get () . Saate määrata loendi elemendi väärtuse, kasutades seadistatud () meetodit. Alamnimekirja saate ka loendist meetodi alamloendi () abil . Nimekirja asemel on mugav kasutada alamnimekirja.
ArrayListi määratlus
Üks standardsetest kollektsiooniklassidest on ArrayList, mis laiendab AbstractListi klassi ja rakendab ka Listi liidest. ArrayListi klassi kasutatakse dünaamiliste massiivide loomiseks, mis kasvavad ja vähenevad, kui see on vajalik. ArrayList klassi abil loodud loend on vaid objektide massiiv. Java puhul on standardmassil fikseeritud pikkus, seega peate eelnevalt teadma massiivi suurust. Kuid see võib juhtuda, et te ei pruugi teada, millist massiivi vajate, kuni ajani. Sellest tulenevalt tutvustas kogumise raamistik selle probleemi lahendamiseks ArrayListi klassi.
ArrayListil on konstruktorid, mis loovad massiivi oma põhiomadustega. Kuigi klass ArrayListi objekti maht suureneb massiivi elementide lisamisel automaatselt, saate ArrayListi objekti mahtu käsitsi suurendada, kasutades meetodit „ Võimekus“ () . Mälu hiljem ümberjaotamise asemel on parem massiivi mahtu suurendada. Kuna ümberjaotamine on kallim kui mälu korraga jaotamine.
Peamised erinevused loendi ja ArrayListi vahel
- Üks tähtsamaid erinevusi loendi ja ArrayListi vahel on see, et nimekiri on liides ja ArrayList on tavaline kollektsiooniklass.
- Loendiliides laiendab kogumise raamistikku, samas kui ArrayList laiendab AbstractList klassi ja rakendab Listi liideseid.
- Nimeliidese loendiliideseks on System.Collection.Generic, samas kui ArrayListi nimeruumi on System.Collection .
- Loendiliides loob kogumit elementidest, mis on salvestatud jadanumbriga ja mida identifitseeritakse või neile pääsevad juurde nende indeksnumber. Teisest küljest loob ArrayList objektide massiivi, kus massiiv võib vajadusel dünaamiliselt kasvada.
Järeldus:
ArrayList ületab staatilise massiivi standardses Java-süsteemis, st massiiv ei saa pärast selle loomist suurendada. Kui massiiv luuakse ArrayListiga, luuakse dünaamiline massiiv, mis võib vajadusel kasvada ja vähendada. Standardne kollektsiooniklass ArrayList laiendab nimekirja liidest.