Pagrindinis skirtumas – sąrašas ir rinkinys
Dauguma programavimo kalbų naudoja masyvus, kad saugotų to paties tipo duomenų rinkinį. Vienas iš pagrindinių masyvų trūkumų yra tas, kad paskelbus masyvo dydį, jo negalima keisti. Jei programuotojas nori išsaugoti reikšmes, viršijančias masyvo dydį, jis turėtų sukurti naują masyvą ir nukopijuoti esamus elementus į naują masyvą. Tokiais atvejais galima naudoti kolekcijas. Su kolekcijų palaikymu galima pridėti elementų, ištrinti elementus ir atlikti daugybę kitų operacijų. Yra įvairių tipų rinkinių programavimo kalbomis, tokiomis kaip Java. Sąrašas ir rinkinys yra kolekcijų hierarchijos sąsajos. Pagrindinė kitų sąsajų sąsaja yra kolekcija. Pagrindinis skirtumas tarp sąrašo ir rinkinio yra tas, kad sąrašas palaiko to paties elemento saugojimą kelis kartus, o rinkinys nepalaiko to paties elemento saugojimo kelis kartus. Todėl rinkinys neleidžia dubliuotis.
Kas yra sąrašas?
Sąrašas yra sąsaja, praplečianti Kolekcijos sąsają. Kolekcijos sąsajoje yra keletas metodų. Pridėti metodas padeda pridėti elementą. „Pašalinimo metodas“yra elemento pašalinimas. Yra „addAll metodas“, skirtas pridėti kelis elementus, o metodas „removeAll“elementams pašalinti iš kolekcijos. Sudėtyje esantis metodas padeda nustatyti, ar konkretus objektas yra sąraše, ar ne. „ContainsAll“yra skirtas nustatyti, ar kolekcijoje yra objektų rinkinio. Iteratoriaus metodas naudojamas peržiūrėti sąrašo elementus. Sąrašui išplečiant kolekciją, visi rinkimo metodai priklauso sąrašui. Išskyrus šiuos metodus, sąraše yra tokie metodai kaip gauti ir nustatyti. Programuotojas gali gauti vertę konkrečiame indekse naudodamas get metodą. Programuotojas gali nustatyti reikšmę tam tikram indeksui naudodamas nustatytą metodą. „indexOf“naudojamas elemento indeksui rasti.
Sąraše operacijos gali būti atliekamos atsižvelgiant į padėtį. Programuotojas gali pateikti duomenų elementą, kuris turi būti įtrauktas į indeksą. Taigi jis bus įtrauktas į konkretų indeksą. Jei programuotojas nepateikia indekso, elementas bus įtrauktas į sąrašo pabaigą. Ji taip pat palaiko įvestą tvarką. Jei pridedamas elementas 1 ir tada elementas2, elementas1 bus prieš elementą2.
01 pav.: sąrašas ir rinkinys
ArrayList, LinkedList, Vector yra keletas klasių, kurios įgyvendina sąrašą. „ArrayList“elemento prieiga yra greita, tačiau įterpimas ir ištrynimas yra mažesnis. ArrayList nėra saugus siūlams. Prieiga prie to paties ArrayList iš kelių gijų gali neduoti tų pačių rezultatų. LinkedList elementai yra susieti tiek atgal, tiek į priekį. Elementų įterpimas ir ištrynimas naudojant LinkedList yra greitesnis nei ArrayList. „LinkedList“įgyvendina sąrašą ir eilę. Vektorius yra panašus į ArrayList, tačiau jis yra saugus protektoriui, nes visi metodai yra sinchronizuoti.
Kas yra nustatytas?
Set yra sąsaja, praplečianti Kolekcijos sąsają. Kadangi rinkinio sąsaja išplečia rinkinį, visi rinkimo metodai taip pat priklauso rinkiniui. Rinkinys nepalaiko dubliavimo verčių. Todėl programuotojas negali du kartus išsaugoti to paties elemento. Jis palaiko unikalų elementų rinkinį. SortedSet sąsaja išplečia rinkinio sąsają. „SortedSet“palaiko elementus surūšiuota tvarka. „NavigableSet“sąsaja išplečia „SortedSet“. „NavigableSet“siūlo navigacijos metodus, pvz., apatinę, grindų, lubų ir kt.
HashSet, LinkedHashSet ir TreeSet yra kai kurios klasės, kuriose įdiegta Set sąsaja.„HashSet“įgyvendina „Set“sąsają. Jis nepalaiko įvestos tvarkos. Jei reikšmės įterpiamos kaip a, x, b, jos gali būti saugomos kaip, x, a, b. LinkedSet palaiko įterptą tvarką. Jei elementai įterpiami a, x, b tvarka, saugojimo tvarka bus a, x, b. „TreeSet“įgyvendina „Set“ir „NavigableSet“. Ji nepalaiko įterpimo tvarkos, bet išsaugo elementus surūšiuota tvarka. Jei įterpta tvarka yra a, c, b, tada elementai bus saugomi kaip a, b, c. Visi HashSet, LinkedHashSet ir TreeSet neturės jokių pasikartojančių elementų.
Kokie yra sąrašo ir rinkinio panašumai?
- Tiek sąrašo, tiek rinkinio sąsajos išplečia rinkinio sąsają.
- Ir sąrašo, ir rinkinio palaikymo operacijos, pvz., elementų pridėjimas, pašalinimas.
Kuo skiriasi sąrašas ir rinkinys?
Sąrašas prieš rinkinį |
|
Sąrašo sąsaja yra kolekcijos antrinė sąsaja, kurioje yra metodai atlikti tokias operacijas kaip įterpimas, ištrynimas, remiantis indeksu. | Nustatyti sąsają yra kolekcijos antrinė sąsaja, kurioje yra metodai atlikti tokias operacijas kaip elementų įterpimas, trynimas išlaikant unikalius elementus. |
Užsiėmimai | |
ArrayList, Vector ir LinkedList yra klasės, kurios įgyvendina sąrašo sąsają. | HashSet, LinkedHashSet ir TreeSet yra klasės, kuriose įdiegta Set sąsaja. |
Elementų dubliavimas | |
Sąrašas palaiko elementų dubliavimą. | Rinkinys nepalaiko elementų dubliavimo. Elementai yra unikalūs. |
Santrauka – sąrašas prieš rinkinį
Kolekcijos naudojamos elementams dinamiškai saugoti. Programavimo kalbos, tokios kaip „Java“, suteikia kolekcijos sąsają. Sąrašas ir rinkinys yra dvi sąsajos, priklausančios kolekcijos sąsajai. Abi sąsajos išplečia Kolekciją. Šiame straipsnyje aptariamas skirtumas tarp sąrašo ir rinkinio. Pagrindinis skirtumas tarp sąrašo ir rinkinio yra tas, kad sąrašas palaiko to paties elemento saugojimą kelis kartus, o rinkinys nepalaiko to paties elemento saugojimo kelis kartus. Rinkinyje visada yra unikalių elementų.