Erinevus loendis ja komplektis Java-s
Sisu
Loendi ja komplekti liides laiendab kogumist. Mõlemad säilitavad elementide või objektide kollektsiooni. Kuid peamine erinevus, mis neid üksteisest eristab, on nimekiri - tellitud elementide kogum, elemendid lisatakse või eemaldatakse või neile pääseb juurde indeksmuutuja abil. Teisest küljest on Set objektide kogum, kus kollektsioon ei luba selles dubleerivaid elemente. Uurime allpool toodud võrdlusdiagrammi abil veel mõned erinevused loendi ja komplekti liideste vahel.
- Võrdlusdiagramm
- Definitsioon
- Peamised erinevused
- Järeldus
Võrdlusdiagramm
Võrdluse alus | Loend | Komplekt |
---|---|---|
Põhiline | Loend säilitab loendis talletatud elementide jada. | Komplekt ei säilita eriti sisestamise järjekorda, kuid Linked HashSet säilitab sisestamise järjekorra. |
Kopeerimine | Loendis võib olla dubleerivaid elemente. | Meetod add () tagastab vale, kui proovite dubleerivaid elemente sisestada. |
Meetodid | Lisaks Kogus määratletud meetoditele määratleb loetelu ka mõned oma meetodid. | Komplekt ei määratle täiendavat meetodit. |
Rakendamine | Loendit rakendavad ArrayList, LinkedList, CopyOnWriteArrayList, Vector, Stack. | Komplekti rakendavad HashSet, LinkedHashSet, EnumSet, TreeSet, CopyOnWriteArraySet. |
Loendi määratlus
Loendiliides laiendab kogumisliidest. Loend on tellitud elementide või objektide kogum. Erinevalt komplektist võib loend sisaldada dubleerivaid elemente. Lisaks kogumisloendis määratletud meetoditele määratleb mõned oma meetodid, näiteks indeksipõhise get () ja set () meetodi. Kogust päritud meetodid add () ja remove (), mis lisab või eemaldab määratud elemendi meetodi argumendis määratud indeksist. Loend on omamoodi massiiv, mille suurus kasvab, kui loendisse elemente lisame.
Loend ei määratle ühtegi meetodit loendi indeksite vahemikuga töötamiseks. See määratleb alamloendi () meetodi, mis tagastab alamloendi kindlaksmääratud vahemiku algsest loendist. Alamloendis tehtud muudatused kuvatakse ka algses loendis. Loendiliidest rakendavad ArrayList, LinkedList, CopyOnWriteArrayList, Vector, Stack.
Komplekti määratlus
Määratud liides laiendab kogumisliidest. Määratud liides on kogum või objektide rühm, mis ei dubleeri selles olevat objekti. See tähendab, et kaks viidet ei saa viidata ühele objektile või üks viide ei saa viidata kahele objektile või ei saa olla kahte viidet, mis viitaksid nullile. Elemendi järjekord või järjestus pole oluline komplekt, kuid pole ka nii, et see keelab tellitud komplekti.
Komplektiliides ei määratle ühtegi meetodit lisaks jaotises Kogumine määratletud meetodile. Selle asemel piirab see lisa () ja addall () kogumismeetodeid, et lisada kollektsiooni dubleeriv objekt. Kui proovite kogu kollektsiooni dubleerivaid objekte lisada kasutades kogumi meetodit add (), annab see vale väärtuse. Vastasel juhul naaseb see tõeseks. Komplekti liidest rakendavad HashSet, LinkedHashSet, EnumSet, TreeSet, CopyOnWriteArraySet.
- Elementide / objektide jada kollektsioonis hoitakse loendis, samas kui Set ei säilita elementide järjekorda, kuid LinkedHashSet säilitab sisestamise järjekorra.
- Loend võib sisaldada dubleerivaid elemente, kuna see identifitseerib mis tahes elemendi oma indeksiga, kuid komplekt Set ei luba dubleerivaid elemente, kuna sellel pole ühtegi kollektsiooni objekti tuvastamiseks mingit indeksi tüüpi elementi.
- Loend määratleb mõned meetodid lisaks kogumikus määratletud meetoditele ka omaette. Teisest küljest ei defineeri Set ühtegi oma meetodit, kuid see piirab kogumismeetodeid dubleerivate elementide lisamiseks.
- Loendit rakendavad liidesed ArrayList, LinkedList, CopyOnWriteArrayList, Vector, Stack. Teisest küljest rakendavad komplekti liidesed HashSet, LinkedHashSet, EnumSet, TreeSet, CopyOnWriteArraySet.
Järeldus:
Loendi ja komplekti liidese kasutamine sõltub nõudest. Kui objektide / elementide järjekord on oluline, peate kasutama loendiliidest. Kui te ei vaja oma kollektsioonis dubleerivaid elemente, peate kasutama liidest Set