ძირითადი განსხვავება – სია და ნაკრები
პროგრამირების ენების უმეტესობა იყენებს მასივებს იმავე ტიპის მონაცემთა ნაკრების შესანახად. მასივების ერთი მთავარი ნაკლი არის ის, რომ მასივის ზომის გამოცხადების შემდეგ, მისი შეცვლა შეუძლებელია. თუ პროგრამისტს სურს შეინახოს მნიშვნელობები, რომლებიც აღემატება მასივის ზომას, მაშინ მან უნდა შექმნას ახალი მასივი და დააკოპიროს არსებული ელემენტები ახალ მასივში. ამ სიტუაციებში კოლექციების გამოყენება შესაძლებელია. კოლექციების მხარდაჭერით შესაძლებელია ელემენტების დამატება, ელემენტების წაშლა და მრავალი სხვა ოპერაცია. არსებობს სხვადასხვა ტიპის კოლექცია ხელმისაწვდომი პროგრამირების ენებზე, როგორიცაა Java. სია და ნაკრები არის კოლექციების იერარქიის ინტერფეისები.სხვა ინტერფეისების ძირითადი ინტერფეისი არის კოლექცია. სიასა და კომპლექტს შორის მთავარი განსხვავება ისაა, რომ სია მხარს უჭერს ერთი და იგივე ელემენტის მრავალჯერ შენახვას, ხოლო Set არ უჭერს მხარს ერთი და იგივე ელემენტის მრავალჯერ შენახვას. ამიტომ, ნაკრები არ იძლევა დუბლირებას.
რა არის სია?
სია არის ინტერფეისი, რომელიც აფართოებს კოლექციის ინტერფეისს. კოლექციის ინტერფეისში რამდენიმე მეთოდია. დამატების მეთოდი ხელს უწყობს ელემენტის დამატებას. "მოხსნის მეთოდი" არის ელემენტის ამოღება. არსებობს "addAll მეთოდი" მრავალი ელემენტის დასამატებლად, ხოლო "removeAll მეთოდი" ელემენტების კოლექციიდან ამოსაღებად. შეიცავს მეთოდს ეხმარება იმის დადგენაში, არის თუ არა კონკრეტული ობიექტი სიაში. "containsAll" არის იმის დადგენა, არის თუ არა ობიექტების ნაკრები კოლექციაში. iterator მეთოდი გამოიყენება სიის ელემენტების გადასატანად. როგორც სია ავრცელებს კოლექციას, კოლექციის ყველა მეთოდი ეკუთვნის სიას. ამ მეთოდების გარდა, სიას აქვს ისეთი მეთოდები, როგორიცაა მიღება და დაყენება.პროგრამისტს შეუძლია მიიღოს მნიშვნელობა კონკრეტულ ინდექსზე get მეთოდის გამოყენებით. პროგრამისტს შეუძლია დააყენოს მნიშვნელობა კონკრეტულ ინდექსზე set მეთოდის გამოყენებით. "indexOf" გამოიყენება ელემენტის ინდექსის საპოვნელად.
სიაში, ოპერაციები შეიძლება შესრულდეს პოზიციის მიხედვით. პროგრამისტს შეუძლია უზრუნველყოს მონაცემთა ელემენტი, რომელიც უნდა დაემატოს ინდექსს. ასე რომ, ის დაემატება კონკრეტულ ინდექსს. თუ პროგრამისტი არ იძლევა ინდექსს, ელემენტი დაემატება სიის ბოლოს. ის ასევე ინარჩუნებს ჩასმული წესრიგს. თუ ელემენტი 1 დაემატება და შემდეგ ელემენტი 2, მაშინ ელემენტი1 იქნება ელემენტის 2-მდე.
სურათი 01: სია და დაყენება
ArrayList, LinkedList, Vector არის რამდენიმე კლასი, რომელიც ახორციელებს List-ს. ArrayList-ში ელემენტზე წვდომა სწრაფია, მაგრამ ჩასმა და წაშლა უფრო დაბალია. ArrayList არ არის ძაფისთვის უსაფრთხო. ერთსა და იმავე ArrayList-ზე წვდომა მრავალი ძაფიდან შეიძლება არ მოგცეთ იგივე შედეგი. LinkedList-ში ელემენტები დაკავშირებულია როგორც უკან, ასევე წინ. LinkedList-ის გამოყენებით ელემენტების ჩასმა და წაშლა უფრო სწრაფია ვიდრე ArrayList. LinkedList ახორციელებს სიას და რიგს ორივეს. ვექტორი ArrayList-ის მსგავსია, მაგრამ ის უსაფრთხოა, რადგან ყველა მეთოდი სინქრონიზებულია.
რა არის კომპლექტი?
Set არის ინტერფეისი, რომელიც აფართოებს კოლექციის ინტერფეისს. როგორც Set ინტერფეისი ავრცელებს კოლექციას, კოლექციის ყველა მეთოდი ასევე ეკუთვნის Set-ს. ნაკრები არ უჭერს მხარს დუბლირების მნიშვნელობებს. ამიტომ, პროგრამისტს არ შეუძლია ერთი და იგივე ელემენტის ორჯერ შენახვა. იგი ინარჩუნებს ელემენტების უნიკალურ კომპლექტს. SortedSet ინტერფეისი აფართოებს Set ინტერფეისს. SortedSet ინარჩუნებს ელემენტებს დალაგებული თანმიმდევრობით. NavigableSet ინტერფეისი აფართოებს SortedSet-ს. NavigableSet გთავაზობთ ნავიგაციის მეთოდებს, როგორიცაა ქვედა, იატაკი, ჭერი და ა.შ.
HashSet, LinkedHashSet და TreeSet არის რამდენიმე კლასი, რომელიც ახორციელებს Set ინტერფეისს. HashSet ახორციელებს Set ინტერფეისს. ის არ ინარჩუნებს ჩასმული წესრიგს. თუ მნიშვნელობები ჩასმულია როგორც a, x, b, შეიძლება შეინახოს როგორც, x, a, b. LinkedSet ინარჩუნებს ჩასმული წესრიგს. თუ ელემენტები ჩასმულია a, x, b თანმიმდევრობით, შენახვის რიგი იქნება a, x, b. TreeSet ახორციელებს Set და NavigableSet. ის არ ინარჩუნებს ჩასმის თანმიმდევრობას, მაგრამ ინახავს ელემენტებს დალაგებული თანმიმდევრობით. თუ ჩასმული რიგია a, c, b, მაშინ ელემენტები შეინახება როგორც a, b, c. ყველა HashSet-ს, LinkedHashSet-ს და TreeSet-ს არ ექნება რაიმე დუბლიკატი ელემენტები.
რა მსგავსებაა სიასა და კომპლექტს შორის?
- List და Set ინტერფეისი აფართოებს კოლექციის ინტერფეისს.
- დაასახელეთ და დააყენეთ მხარდაჭერის ოპერაციები, როგორიცაა ელემენტების დამატება, წაშლა.
რა განსხვავებაა სიასა და კომპლექტს შორის?
List vs Set |
|
List Interface არის კოლექციის ქვე-ინტერფეისი, რომელიც შეიცავს ოპერაციების შესრულების მეთოდებს, როგორიცაა ჩასმა, წაშლა ინდექსის მიხედვით. | Set Interface არის კოლექციის ქვე-ინტერფეისი, რომელიც შეიცავს ოპერაციების შესრულების მეთოდებს, როგორიცაა ელემენტების ჩასმა, წაშლა უნიკალური ელემენტების შენარჩუნებით. |
გაკვეთილები | |
ArrayList, Vector და LinkedList არის კლასები, რომლებიც ახორციელებენ List ინტერფეისს. | HashSet, LinkedHashSet და TreeSet არის კლასები, რომლებიც ახორციელებენ Set ინტერფეისს. |
ელემენტის დუბლირება | |
სია მხარს უჭერს ელემენტების დუბლირებას. | Set არ აქვს ელემენტების დუბლირების მხარდაჭერა. ელემენტები უნიკალურია. |
შეჯამება – სია vs ნაკრები
კოლექციები გამოიყენება ელემენტების დინამიურად შესანახად. პროგრამირების ენები, როგორიცაა Java, უზრუნველყოფს კოლექციის ინტერფეისს. სია და ნაკრები არის ორი ინტერფეისი, რომელიც ეკუთვნის კოლექციის ინტერფეისს. ორივე ინტერფეისი აფართოებს კოლექციას. ამ სტატიაში განხილული იყო განსხვავება სიასა და კომპლექტს შორის. სიასა და კომპლექტს შორის მთავარი განსხვავება ისაა, რომ სია მხარს უჭერს ერთი და იგივე ელემენტის მრავალჯერ შენახვას, ხოლო Set არ უჭერს მხარს ერთი და იგივე ელემენტის მრავალჯერ შენახვას. ნაკრები ყოველთვის ინახავს უნიკალურ ელემენტებს.