Arrays vs Arraylists
Զանգվածներն ամենից հաճախ օգտագործվող տվյալների կառուցվածքն են տարրերի հավաքածուն պահելու համար: Ծրագրավորման լեզուներից շատերը հնարավորություն են տալիս հեշտությամբ հայտարարել զանգվածներ և մուտքի տարրեր զանգվածներում: Arraylist-ը կարող է դիտվել որպես դինամիկ զանգված, որը կարող է մեծանալ չափերով: Այս պատճառով, ծրագրավորողին անհրաժեշտ չէ իմանալ զանգվածների ցանկի չափը, երբ նա սահմանում է այն:
Ի՞նչ են զանգվածները:
Ցուցադրված է նկար 1-ում, կոդի կտոր է, որը սովորաբար օգտագործվում է զանգվածին արժեքներ հայտարարելու և վերագրելու համար: Նկար 2-ում պատկերված է, թե ինչպիսի տեսք կունենա զանգվածը հիշողության մեջ:
int արժեքներ[5]; արժեքներ[0]=100; արժեքներ[1]=101; արժեքներ[2]=102; արժեքներ[3]=103; արժեքներ[4]=104; |
Նկար 1. Զանգվածին արժեքներ հայտարարելու և վերագրելու ծածկագիր
100 | 101 | 102 | 103 | 104 |
Ինդեքս՝ 0 | 1 | 2 | 3 | 4 |
Նկար 2. Հիշողության մեջ պահվող զանգված
Վերևի կոդը սահմանում է զանգված, որը կարող է պահել 5 ամբողջ թվեր, և դրանք հասանելի են՝ օգտագործելով 0-ից 4 ինդեքսները: Զանգվածի կարևոր հատկությունն այն է, որ ամբողջ զանգվածը հատկացվում է որպես հիշողության մեկ բլոկի, և յուրաքանչյուր տարր ստանում է իր սեփական տարածք զանգվածում:Երբ զանգվածը սահմանվում է, դրա չափը ֆիքսվում է: Այսպիսով, եթե կազմման պահին վստահ չեք զանգվածի չափի մասին, դուք պետք է սահմանեք բավականաչափ մեծ զանգված՝ ապահով կողմում գտնվելու համար: Բայց, շատ դեպքերում, մենք իրականում պատրաստվում ենք օգտագործել ավելի քիչ թվով տարրեր, քան մենք հատկացրել ենք: Այսպիսով, զգալի քանակությամբ հիշողություն իրականում վատնում է: Մյուս կողմից, եթե «բավականաչափ մեծ զանգվածը» իրականում բավականաչափ մեծ չէ, ծրագիրը կխափանվի:
Ի՞նչ են Arraylists?
Զանգվածացանկը կարող է դիտվել որպես դինամիկ զանգված, որը կարող է մեծանալ չափերով: Հետևաբար, զանգվածային ցուցակները իդեալական են օգտագործելու այն իրավիճակներում, երբ դուք չգիտեք հայտարարագրման պահին պահանջվող տարրերի չափը: Java-ում arraylist-ները կարող են պահել միայն օբյեկտներ, նրանք չեն կարող ուղղակիորեն պահել պարզունակ տիպերը (կարող եք տեղադրել պարզունակ տիպերը օբյեկտի ներսում կամ օգտագործել պարզունակ տեսակների փաթաթման դասերը): Ընդհանուր առմամբ, arraylist-ներին տրամադրվում են ներդրում, ջնջում և որոնում կատարելու մեթոդներ: Տարր մուտք գործելու ժամանակային բարդությունը o(1) է, մինչդեռ տեղադրումը և ջնջումը ունեն o(n) ժամանակային բարդություն:Java-ում arraylists-ը կարելի է անցնել՝ օգտագործելով foreach հանգույցները, կրկնողները կամ պարզապես օգտագործելով ինդեքսները:
Ո՞րն է տարբերությունը Arrays-ի և Arraylists-ի միջև
Չնայած զանգվածները և զանգվածացանկերը նման են այն իմաստով, որ երկուսն էլ օգտագործվում են տարրերի հավաքածուները պահելու համար, դրանք տարբերվում են դրանց սահմանման ձևով: Զանգվածի չափը պետք է տրվի, երբ զանգվածը սահմանվում է, բայց դուք կարող եք սահմանել զանգված՝ առանց իրական չափը իմանալու: Դուք կարող եք տարրեր ավելացնել զանգվածների ցանկում այն սահմանվելուց հետո, և դա հնարավոր չէ զանգվածների դեպքում: Բայց Java-ում arraylist-ները չեն կարող պահել պարզունակ տիպեր, բայց զանգվածները կարող են օգտագործվել պարզունակ տիպեր պահելու համար։ Բայց եթե ձեզ անհրաժեշտ է տվյալների կառուցվածք, որը կարող է տարբերել իր չափերը, ապա arraylist-ը կլինի լավագույն ընտրությունը: