Հիմնական տարբերություն – TreeSet ընդդեմ HashSet
Ծրագրավորման լեզուների մեծ մասն աջակցում է զանգվածներին: Դա տվյալների կառուցվածք է, որն օգտագործվում է նույն տվյալների տիպի մի քանի տարրեր պահելու համար: Եթե կա զանգված հայտարարված վեց տարրերի համար, ապա այն չի կարող օգտագործվել տասը տարր պահելու համար։ Հետևաբար, զանգվածները դինամիկ չեն և չեն կարող փոխել զանգվածի չափը, երբ այն հայտարարվել է: Ծրագրավորման լեզուները, ինչպիսիք են Java-ն, աջակցում են հավաքածուներ, որոնք օգտագործվում են տվյալների դինամիկ պահպանման համար: Հավաքածուներն աջակցում են այնպիսի գործողություններ, ինչպիսիք են տարրերի ավելացումը և տարրերի ջնջումը: Հավաքածուի հիերարխիայում կան մի շարք միջերեսներ և դասեր: Հիմնական ինտերֆեյսը Collection ինտերֆեյսն է:Set-ը ինտերֆեյս է, որն ընդլայնում է Հավաքածուի ինտերֆեյսը: Այն թույլ չի տալիս կրկնօրինակել։ TreeSet-ը և HashSet-ը երկու դաս են Collection-ի հիերարխիայում և երկուսն էլ իրականացնում են Set ինտերֆեյսը: TreeSet-ը դաս է, որն իրականացնում է Set ինտերֆեյսը և այն օգտագործվում է եզակի տարրերը աճման կարգով պահելու համար: HashSet-ը դաս է, որն իրականացնում է Set ինտերֆեյսը և այն օգտագործվում է եզակի տարրեր պահելու համար՝ օգտագործելով Hashing մեխանիզմը: TreeSet-ի և HashSet-ի հիմնական տարբերությունն այն է, որ TreeSet-ը տարրերը պահում է աճման կարգով, մինչդեռ HashSet-ը տարրերը չի պահում աճման կարգով: Ե՛վ TreeSet, և՛ HashSet-ը պահում են միայն եզակի տարրեր:
Ի՞նչ է TreeSet-ը:
TreeSet դասը իրականացնում է NavigableSet միջերեսը: NavigableSet ինտերֆեյսը ընդլայնում է SortedSet, Set, Collection և Iterable միջերեսները հիերարխիկ կարգով: TreeSet-ը միշտ պահպանում է աճման կարգը: Եթե տարրերը տեղադրվել են B, A, C կարգով, դրանք կպահվեն որպես A, B, C: Մեթոդները, ինչպիսիք են ավելացնել (), հեռացնել () կարող են օգտագործվել TreeSet օբյեկտի հետ:Ավելացնել մեթոդը կարող է օգտագործվել տարր ավելացնելու համար: Հեռացման մեթոդը օգտագործվում է հավաքածուից տարրը հեռացնելու համար: Սրանք որոշ մեթոդներ են, որոնք կարող են օգտագործվել TreeSet-ի հետ:
Նկար 01. Ծրագիր TreeSet-ով
Ըստ վերը նշված ծրագրի՝ ստեղծվում է TreeSet տիպի օբյեկտ։ Տողային տվյալների տարրերը ավելացվում են այդ օբյեկտին՝ օգտագործելով ավելացնել մեթոդը։ Տեղադրված տվյալների կարգը A, D, A, B, C, D է: Օգտագործելով կրկնվող արժեքները, պահված արժեքները տպվում են էկրանին: Արդյունքը A, B, C, D է: Չնայած կան երկու A տառ և երկու D տառ, ելքը ցուցադրում է մեկ A և մեկ D տառ: Հետևաբար, TreeSet-ը պահպանում է եզակի տարրեր: Չկա հատուկ տեղադրման կարգ, բայց արդյունքը դիտարկելիս կարելի է տեսնել, որ TreeSet-ը պահպանում է տարրերի աճման կարգը:
Ի՞նչ է HashSet-ը:
HashSet դասը ընդլայնում է AbstractSet դասը, որն իրականացնում է Set Interface: Set ինտերֆեյսը ժառանգում է Collection և Iterable միջերեսները հիերարխիկ կարգով: HashSet-ում երաշխիք չկա, որ տարրերը կպահպանեն աճման և տեղադրվող կարգը: Եթե տեղադրված հերթականությունը եղել է A, B, C, ապա արժեքները կարող են պահվել որպես C, A, B: Պահպանման կարգը կարող է լինել նաև A, B, C, սակայն երաշխիք չկա, որ տեղադրված կարգը կամ աճող կարգը պահպանվում է:
Նկար 02. ծրագիր HashSet-ով
Ըստ վերը նշված ծրագրի՝ ստեղծվում է HashSet տիպի օբյեկտ։ Տողային տվյալների տարրերը ավելացվում են այդ օբյեկտին՝ օգտագործելով ավելացնել մեթոդը։ Տեղադրված տվյալների կարգը L, R, M, M, R, L է: Օգտագործելով iterator, պահված արժեքները տպվում են էկրանին:Արդյունքը R L M է: Չնայած յուրաքանչյուրից կա երկու L, R և M տառ, յուրաքանչյուրից միայն մեկ տառ է ցուցադրվում: Հետևաբար, HashSet-ը պահպանում է եզակի տարրեր: Արդյունքը դիտարկելիս երևում է, որ չկա աճման կարգ կամ պահպանվում է տեղադրված կարգը։
Որո՞նք են նմանությունները TreeSet-ի և HashSet-ի միջև:
- Եվ TreeSet-ը և HashSet-ը դասեր են, որոնք պատկանում են հավաքածուի հիերարխիային:
- Եվ TreeSet-ը և HashSet-ը պահպանում են միայն եզակի տարրեր:
- Եվ TreeSet-ը և HashSet-ը կարող են օգտագործվել բազմաթիվ տարրեր պահելու և շահարկելու համար:
- Եվ TreeSet-ը և HashSet-ը չեն պահպանում տեղադրված հերթականությունը:
Ո՞րն է տարբերությունը TreeSet-ի և HashSet-ի միջև:
TreeSet ընդդեմ HashSet |
|
TreeSet-ը հավաքածուի հիերարխիայի դաս է, որն օգտագործվում է եզակի տարրերը աճման կարգով պահելու համար: | HashSet-ը հավաքածուի հիերարխիայի դաս է, որն օգտագործվում է եզակի տարրեր պահելու համար՝ օգտագործելով Hashing մեխանիզմը: |
Տարրերի պահպանում | |
TreeSet-ը տարրերը պահում է աճման կարգով: | HashSet-ը տարրերը չի պահում աճման կարգով: |
Ամփոփում – TreeSet ընդդեմ HashSet
Ծրագրավորման մեջ անհրաժեշտ է տվյալների տարրերը դինամիկ կերպով պահել: Ծրագրավորման լեզուները, ինչպիսիք են Java-ն, աջակցում են Collections-ին այս առաջադրանքին հասնելու համար: Հավաքածուի հիերարխիայում կան մի շարք միջերեսներ և դասեր: TreeSet-ը և HashSet-ը երկու դաս են Collection-ի հիերարխիայում: Երկուսն էլ իրականացնում են Set ինտերֆեյսը: TreeSet-ը դաս է, որն իրականացնում է Set ինտերֆեյսը և այն օգտագործվում է եզակի տարրերը աճման կարգով պահելու համար: HashSet-ը դաս է, որն իրականացնում է Set ինտերֆեյսը և այն օգտագործվում է եզակի տարրեր պահելու համար՝ օգտագործելով Hashing մեխանիզմը:TreeSet-ի և HashSet-ի միջև տարբերությունն այն է, որ TreeSet-ը տարրերը պահում է աճման կարգով, մինչդեռ HashSet-ը տարրերը չի պահում աճման կարգով: Այս հոդվածը քննարկեց TreeSet-ի և HashSet-ի միջև եղած տարբերությունը: