Safu dhidi ya Orodha za Usanifu
Msururu ndio muundo wa data unaotumika sana kuhifadhi mkusanyiko wa vipengee. Lugha nyingi za programu hutoa mbinu za kutangaza kwa urahisi safu na vipengele vya kufikia katika safu. Orodha ya safu inaweza kuonekana kama safu inayobadilika, ambayo inaweza kukua kwa ukubwa. Kwa sababu hii, mtayarishaji programu hahitaji kujua ukubwa wa orodha wakati anaifafanua.
Arrays ni nini?
Inavyoonyeshwa kwenye mchoro wa 1, ni sehemu ya msimbo ambayo kwa kawaida hutumika kutangaza na kugawa thamani kwa mkusanyiko. Kielelezo cha 2 kinaonyesha jinsi safu inaweza kuonekana kama kwenye kumbukumbu.
thamani za ndani[5]; thamani[0]=100; thamani[1]=101; thamani[2]=102; thamani[3]=103; thamani[4]=104; |
Kielelezo 1: Msimbo wa kutangaza na kugawa thamani kwa safu
100 | 101 | 102 | 103 | 104 |
Fahirisi: 0 | 1 | 2 | 3 | 4 |
Kielelezo 2: Mkusanyiko uliohifadhiwa kwenye kumbukumbu
Juu ya msimbo, inafafanua safu inayoweza kuhifadhi nambari 5 kamili na zinaweza kufikiwa kwa kutumia fahirisi 0 hadi 4. Sifa moja muhimu ya safu ni kwamba, safu nzima imetengwa kama hifadhi moja ya kumbukumbu na kila kipengele hupata yake. nafasi mwenyewe katika safu. Mara safu inapofafanuliwa, ukubwa wake umewekwa. Kwa hivyo ikiwa huna uhakika juu ya saizi ya safu wakati wa kukusanya, utalazimika kufafanua safu kubwa ya kutosha kuwa katika upande salama. Lakini, mara nyingi, kwa kweli tutatumia idadi ndogo ya vipengele kuliko tulivyotenga. Hivyo kiasi kikubwa cha kumbukumbu ni kweli kupita. Kwa upande mwingine ikiwa "safu kubwa ya kutosha" si kubwa vya kutosha, programu inaweza kuacha kufanya kazi.
Arraylists ni nini?
Orodha ya mkusanyiko inaweza kuonekana kama safu inayobadilika, ambayo inaweza kukua kwa ukubwa. Kwa hivyo orodha za safu ni bora kutumika katika hali ambayo haujui saizi ya vitu vinavyohitajika wakati wa tamko. Katika Java, orodha za safu zinaweza tu kushikilia vitu, haziwezi kushikilia aina za primitive moja kwa moja (unaweza kuweka aina za zamani ndani ya kitu au kutumia madarasa ya kukunja ya aina za zamani). Kwa ujumla orodha za safu hupewa mbinu za kufanya uwekaji, kufuta na kutafuta. Utata wa wakati wa kufikia kipengele ni o(1), ilhali uwekaji na ufutaji una utata wa wakati wa o(n). Katika Java, orodha za safu zinaweza kupitiwa kwa kutumia vitanzi vya upande wa mbele, virudiarudia au kwa kutumia faharasa.
Kuna tofauti gani kati ya Arrays na Arraylists
Ingawa safu na orodha zinafanana kwa maana kwamba zote mbili hutumika kuhifadhi mikusanyo ya vipengele, zinatofautiana katika jinsi zinavyofafanuliwa. Saizi ya safu inapaswa kutolewa wakati safu inafafanuliwa, lakini unaweza kufafanua orodha bila kujua saizi halisi. Unaweza kuongeza vipengele kwenye orodha baada ya kufafanuliwa na hii haiwezekani kwa safu. Lakini katika Java, orodha za safu haziwezi kushikilia aina za zamani, lakini safu zinaweza kutumika kushikilia aina za zamani. Lakini ikiwa unahitaji muundo wa data ambao unaweza kubadilisha ukubwa wake, orodha ya mkusanyiko litakuwa chaguo bora zaidi.