მასივები vs arraylists
მასივები არის ყველაზე ხშირად გამოყენებული მონაცემთა სტრუქტურა ელემენტების კოლექციის შესანახად. პროგრამირების ენების უმეტესობა იძლევა მეთოდებს, რათა ადვილად გამოაცხადოთ მასივები და წვდომა ელემენტების მასივებში. მასივის სია შეიძლება ჩაითვალოს დინამიურ მასივად, რომელიც შეიძლება გაიზარდოს ზომით. ამ მიზეზის გამო, პროგრამისტს არ სჭირდება მასივის სიდიდის ცოდნა, როდესაც ის განსაზღვრავს მას.
რა არის მასივები?
ნაჩვენებია ფიგურაში 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?
მასივის სია შეიძლება ჩაითვალოს დინამიურ მასივად, რომელიც შეიძლება გაიზარდოს ზომით. ამიტომ მასივები იდეალურია გამოსაყენებლად იმ სიტუაციებში, როდესაც თქვენ არ იცით დეკლარაციის დროს საჭირო ელემენტების ზომა. ჯავაში მასივებს შეუძლიათ მხოლოდ ობიექტების შენახვა, მათ არ შეუძლიათ უშუალოდ პრიმიტიული ტიპების შენახვა (შეგიძლიათ განათავსოთ პრიმიტიული ტიპები ობიექტის შიგნით ან გამოიყენოთ პრიმიტიული ტიპების შეფუთვის კლასები). როგორც წესი, მასივებს მიეწოდება მეთოდები ჩასმის, წაშლისა და ძიების შესასრულებლად. ელემენტზე წვდომის დროის სირთულე არის o(1), ხოლო ჩასმა და წაშლა აქვს o(n) დროის სირთულე.ჯავაში, მასივების გავლა შესაძლებელია foreach მარყუჟების, იტერატორების ან უბრალოდ ინდექსების გამოყენებით.
რა განსხვავებაა მასივებსა და მასივებს შორის
მიუხედავად იმისა, რომ მასივები და მასივები მსგავსია იმ გაგებით, რომ ორივე მათგანი გამოიყენება ელემენტების კოლექციების შესანახად, ისინი განსხვავდებიან მათი განმარტებით. მასივის ზომა უნდა იყოს მითითებული მასივის განსაზღვრისას, მაგრამ თქვენ შეგიძლიათ განსაზღვროთ მასივის სია რეალური ზომის ცოდნის გარეშე. თქვენ შეგიძლიათ დაამატოთ ელემენტები მასივის სიაში მისი განსაზღვრის შემდეგ და ეს შეუძლებელია მასივებით. მაგრამ ჯავაში მასივები ვერ იტევს პრიმიტიულ ტიპებს, მაგრამ მასივები შეიძლება გამოყენებულ იქნას პრიმიტიული ტიპების შესანახად. მაგრამ თუ გჭირდებათ მონაცემთა სტრუქტურა, რომელსაც შეუძლია იცვლებოდეს მისი ზომა, arraylist იქნება საუკეთესო არჩევანი.