ძირითადი განსხვავება – TreeSet vs HashSet
პროგრამირების ენების უმეტესობა მხარს უჭერს მასივებს. ეს არის მონაცემთა სტრუქტურა, რომელიც გამოიყენება იმავე ტიპის მონაცემთა მრავალი ელემენტის შესანახად. თუ მასივი გამოცხადებულია ექვსი ელემენტისთვის, მაშინ ის არ შეიძლება გამოყენებულ იქნას ათი ელემენტის შესანახად. მაშასადამე, მასივები არ არის დინამიური და ვერ შეცვლიან მასივის ზომას მისი გამოცხადების შემდეგ. პროგრამირების ენები, როგორიცაა Java, მხარს უჭერს კოლექციებს, რომლებიც გამოიყენება მონაცემთა დინამიურად შესანახად. კოლექციები მხარს უჭერს ოპერაციებს, როგორიცაა ელემენტების დამატება და ელემენტების წაშლა. კოლექციის იერარქიაში არის რამდენიმე ინტერფეისი და კლასი. ბაზის ინტერფეისი არის კოლექციის ინტერფეისი. Set არის ინტერფეისი, რომელიც აფართოებს კოლექციის ინტერფეისს. ეს არ იძლევა დუბლირების საშუალებას. TreeSet და HashSet არის ორი კლასი Collection-ის იერარქიაში და ორივე ახორციელებს Set ინტერფეისს. TreeSet არის კლასი, რომელიც ახორციელებს Set ინტერფეისს და იგი გამოიყენება უნიკალური ელემენტების აღმავალი თანმიმდევრობით შესანახად. HashSet არის კლასი, რომელიც ახორციელებს Set ინტერფეისს და გამოიყენება უნიკალური ელემენტების შესანახად Hashing მექანიზმის გამოყენებით. მთავარი განსხვავება TreeSet-სა და HashSet-ს შორის არის ის, რომ TreeSet ინახავს ელემენტებს აღმავალი თანმიმდევრობით, ხოლო HashSet არ ინახავს ელემენტებს აღმავალი თანმიმდევრობით. ორივე TreeSet და HashSet ინახავს მხოლოდ უნიკალურ ელემენტებს.
რა არის ხეების ნაკრები?
TreeSet კლასი ახორციელებს NavigableSet ინტერფეისს. NavigableSet ინტერფეისი აფართოებს SortedSet, Set, Collection და Iterable ინტერფეისებს იერარქიული თანმიმდევრობით. TreeSet ყოველთვის ინარჩუნებს აღმავალ წესრიგს. თუ ელემენტები ჩასმულია B, A, C თანმიმდევრობით, ისინი შეინახება A, B, C სახით. ისეთი მეთოდები, როგორიცაა add (), remove () შეიძლება გამოყენებულ იქნას TreeSet ობიექტთან.დამატების მეთოდი შეიძლება გამოყენებულ იქნას ელემენტის დასამატებლად. ამოღების მეთოდი გამოიყენება კოლექციიდან ელემენტის ამოსაღებად. ეს არის რამდენიმე მეთოდი, რომელიც შეიძლება გამოყენებულ იქნას TreeSet-თან ერთად.
სურათი 01: პროგრამა TreeSet-ით
ზემოხსენებული პროგრამის მიხედვით იქმნება TreeSet ტიპის ობიექტი. სიმებიანი მონაცემთა ელემენტები ემატება ამ ობიექტს დამატების მეთოდის გამოყენებით. მონაცემთა ჩასმული თანმიმდევრობა არის A, D, A, B, C, D. იტერატორის გამოყენებით, შენახული მნიშვნელობები იბეჭდება ეკრანზე. გამომავალი არის A, B, C, D. მიუხედავად იმისა, რომ არის ორი A ასო და ორი D, გამომავალი აჩვენებს ერთ A და თითო D ასოებს. ამიტომ, TreeSet ინახავს უნიკალურ ელემენტებს. არ არსებობს კონკრეტული ჩასმის რიგი, მაგრამ გამომავალზე დაკვირვებისას ჩანს, რომ TreeSet ინარჩუნებს ელემენტების აღმავალ წესრიგს.
რა არის ჰეშსეტი?
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. იტერატორის გამოყენებით, შენახული მნიშვნელობები იბეჭდება ეკრანზე.გამომავალი არის R L M. მიუხედავად იმისა, რომ თითოეულიდან არის ორი L, R და M ასო, თითოეულიდან მხოლოდ ერთი ასოა ნაჩვენები. ამიტომ, HashSet ინახავს უნიკალურ ელემენტებს. გამომავალზე დაკვირვებისას ჩანს, რომ არ არის აღმავალი რიგი ან შენარჩუნებულია ჩასმული რიგი.
რა მსგავსებაა TreeSet-სა და HashSet-ს შორის?
- ორივე TreeSet და HashSet კლასები ეკუთვნის კოლექციის იერარქიას.
- TreeSet და HashSet ინახავს მხოლოდ უნიკალურ ელემენტებს.
- ორივე TreeSet და HashSet შეიძლება გამოყენებულ იქნას მრავალი ელემენტის შესანახად და მანიპულირებისთვის.
- ორივე TreeSet და HashSet არ ინარჩუნებენ ჩასმული თანმიმდევრობას.
რა განსხვავებაა TreeSet-სა და HashSet-ს შორის?
TreeSet vs HashSet |
|
TreeSet არის კლასი კოლექციის იერარქიაში, რომელიც გამოიყენება უნიკალური ელემენტების აღმავალი თანმიმდევრობით შესანახად. | HashSet არის კლასი კოლექციების იერარქიაში, რომელიც გამოიყენება უნიკალური ელემენტების შესანახად ჰეშირების მექანიზმის გამოყენებით. |
ელემენტის შენახვა | |
TreeSet ინახავს ელემენტებს ზრდადი თანმიმდევრობით. | HashSet არ ინახავს ელემენტებს ზრდადი თანმიმდევრობით. |
რეზიუმე – TreeSet vs HashSet
პროგრამაში საჭიროა მონაცემთა ელემენტების დინამიურად შენახვა. პროგრამირების ენები, როგორიცაა Java, მხარს უჭერს კოლექციებს ამ ამოცანის მისაღწევად. კოლექციის იერარქიაში არის რამდენიმე ინტერფეისი და კლასი. TreeSet და HashSet ორი კლასია კოლექციის იერარქიაში. ორივე ახორციელებს Set ინტერფეისს. TreeSet არის კლასი, რომელიც ახორციელებს Set ინტერფეისს და იგი გამოიყენება უნიკალური ელემენტების აღმავალი თანმიმდევრობით შესანახად. HashSet არის კლასი, რომელიც ახორციელებს Set ინტერფეისს და გამოიყენება უნიკალური ელემენტების შესანახად Hashing მექანიზმის გამოყენებით.განსხვავება TreeSet-სა და HashSet-ს შორის არის ის, რომ TreeSet ინახავს ელემენტებს აღმავალი თანმიმდევრობით, ხოლო HashSet არ ინახავს ელემენტებს ზრდის მიხედვით. ამ სტატიაში განხილული იყო განსხვავება TreeSet-სა და HashSet-ს შორის.