Tofauti Muhimu – Orodha dhidi ya Kuweka
Lugha nyingi za programu hutumia mkusanyiko kuhifadhi seti ya data ya aina sawa. Upungufu mmoja mkubwa wa safu ni kwamba, mara tu ukubwa wa safu unapotangazwa, hauwezi kurekebishwa. Ikiwa mpangaji programu anataka kuhifadhi maadili yanayozidi saizi ya safu, basi anapaswa kuunda safu mpya na kunakili vipengee vilivyopo kwenye safu mpya. Katika hali hizi, makusanyo yanaweza kutumika. Inawezekana kuongeza vipengele, kufuta vipengele na shughuli nyingine nyingi kwa usaidizi wa makusanyo. Kuna aina tofauti za makusanyo zinazopatikana katika lugha za programu kama vile Java. Orodha na Seti ni miingiliano ya safu ya mikusanyiko. Kiolesura cha msingi cha violesura vingine ni Mkusanyiko. Tofauti kuu kati ya Orodha na Set ni kwamba Orodha inasaidia kuhifadhi kipengele kimoja mara kadhaa huku Set haiauni kuhifadhi kipengele sawa mara kadhaa. Kwa hivyo, Seti hairuhusu kurudia.
Orodha ni nini?
Orodha ni kiolesura kinachopanua kiolesura cha Mkusanyiko. Kuna njia kadhaa katika kiolesura cha Mkusanyiko. Njia ya kuongeza husaidia kuongeza kipengele. 'Njia ya kuondoa' ni kuondoa kipengele. Kuna 'njia ya kuongezaAll' ya kuongeza vipengele vingi huku 'removeAll method' ili kuondoa vipengele kwenye mkusanyiko. Njia iliyo na husaidia kupata ikiwa kitu fulani kipo kwenye Orodha au la. 'containsAll' ni kutafuta ikiwa seti ya vitu iko kwenye mkusanyiko. Njia ya kurudia hutumiwa kuzunguka vitu vya orodha. Kadiri Orodha inavyopanua Mkusanyiko, mbinu zote za Ukusanyaji ni za Orodha. Zaidi ya njia hizo, Orodha ina njia kama vile kupata na kuweka. Mpangaji programu anaweza kupata thamani katika faharisi maalum kwa kutumia get method. Mpangaji programu anaweza kuweka thamani katika faharisi maalum kwa kutumia mbinu iliyowekwa. ‘indexOf’ hutumika kupata faharasa ya kipengele.
Katika Orodha, shughuli zinaweza kufanywa kulingana na nafasi. Kipanga programu kinaweza kutoa kipengele cha data ambacho kinapaswa kuongezwa kwenye faharasa. Kwa hivyo itaongezwa kwa faharisi maalum. Ikiwa programu haitoi faharisi, kipengee kitaongezwa hadi mwisho wa Orodha. Pia hudumisha utaratibu ulioingizwa. Kipengele cha 1 kikiongezwa kisha kipengele cha 2 kikiongezwa, basi kipengele cha 1 kitakuwa kabla ya kipengele cha 2.
Kielelezo 01: Orodhesha na Weka
ArrayOrodha, Orodha Iliyounganishwa, Vekta ni baadhi ya madarasa yanayotekeleza Orodha. Katika ArrayList, kupata kipengee ni haraka lakini kuingiza na kufuta ni chini. ArrayList sio salama kwa uzi. Kupata ArrayList sawa kutoka kwa nyuzi nyingi kunaweza kutoa matokeo sawa. Katika Orodha Iliyounganishwa, vipengele vimeunganishwa kwa nyuma na mbele. Kuingiza na kufuta vipengele kwa kutumia LinkedList ni haraka kuliko ArrayList. Orodha Iliyounganishwa inatekeleza Orodha na Kuweka Foleni Zote mbili. Vekta ni sawa na ArrayList, lakini ni salama kwa sababu mbinu zote zimesawazishwa.
Nini Kimewekwa?
Set ni kiolesura kinachopanua kiolesura cha Mkusanyiko. Kadiri kiolesura cha Seti kinavyopanua Mkusanyiko, mbinu zote za Mkusanyiko pia ni za Set. Seti haitumii thamani za kurudia. Kwa hiyo, programu haiwezi kuhifadhi kipengele sawa mara mbili. Inaweka seti ya kipekee ya vipengele. Kiolesura cha SortedSet huongeza kiolesura cha Kuweka. SortedSet hudumisha vipengele katika mpangilio uliopangwa. Kiolesura cha NavigableSet huongeza SortedSet. NavigableSet hutoa mbinu za kusogeza kama vile chini, sakafu, dari n.k.
HashSet, LinkedHashSet na TreeSet ni baadhi ya madarasa ambayo yanatekeleza kiolesura cha Set. HashSet hutumia kiolesura cha Set. Haihifadhi utaratibu ulioingizwa. Ikiwa thamani zimeingizwa kama a, x, b inaweza kuhifadhi kama, x, a, b. LinkedSet hudumisha mpangilio ulioingizwa. Ikiwa vipengele vinaingizwa katika a, x, b ili, utaratibu wa kuhifadhi utakuwa a, x, b. TreeSet hutumia Set na NavigableSet. Haihifadhi mpangilio wa kuingizwa lakini huhifadhi vipengee kwa mpangilio uliopangwa. Ikiwa mpangilio ulioingizwa ni a, c, b, basi vipengele vitahifadhiwa kama a, b, c. HashSet zote, LinkedHashSet na TreeSet hazitakuwa na vipengele vyovyote vinavyorudiwa.
Je, ni Nini Zinazofanana Kati ya Orodha na Seti?
- Orodha na violesura vya Seti hupanua kiolesura cha Mkusanyiko.
- Orodha na Weka shughuli za usaidizi kama vile kuongeza, kuondoa vipengele.
Kuna tofauti gani kati ya Orodha na Seti?
Orodha dhidi ya Seti |
|
List Interface ni kiolesura kidogo cha Mkusanyiko ambacho kina mbinu za kutekeleza shughuli kama vile kuingiza, kufuta kulingana na faharasa. | Set Interface ni kiolesura kidogo cha Mkusanyiko ambacho kina mbinu za kutekeleza shughuli kama vile kuingiza, kufuta vipengele huku ukidumisha vipengele vya kipekee. |
Madarasa | |
ArrayOrodha, Vekta, na Orodha Iliyounganishwa ni aina zinazotumia kiolesura cha Orodha. | HashSet, LinkedHashSet, na TreeSet ni aina zinazotumia kiolesura cha Set. |
Rudufu ya Kipengele | |
Orodha inaweza kutumia urudufishaji wa vipengele. | Set haitumii urudufu wa vipengele. Vipengele ni vya kipekee. |
Muhtasari – Orodha dhidi ya Seti
Mikusanyiko hutumika kuhifadhi vipengee kwa nguvu. Lugha za programu kama vile Java hutoa kiolesura cha Mkusanyiko. Orodha na Seti ni violesura viwili ambavyo ni vya kiolesura cha Mkusanyiko. Violesura vyote viwili vinapanua Mkusanyiko. Nakala hii ilijadili tofauti kati ya Orodha na Seti. Tofauti kuu kati ya Orodha na Set ni kwamba Orodha inasaidia kuhifadhi kipengele sawa mara nyingi huku Set haiauni kuhifadhi kipengele kimoja mara kadhaa. Set daima hudumisha vipengele vya kipekee.