Java Collections (Part II)

მოკლედ ვაგრძელებ წინა პოსტს და გთავაზობთ შემდეგ 5 შეკითხვას Java Collection-თან დაკავშირებით.

6) აღწერეთ Java hashCode() და equals() მეთოდები.

equals() მეთოდის გამოიყენება იმის დასადგენად ორი Java-ს ობიექტი არის თ არა ტოლი. როცა ჩვენ გვაქვს ჩვენი შექმნილი (custom) კლასი, ჩვენ გვჭრდება რომ გადავფაროთ equals() მეთოდი და დავწეროთ იმპლემენტაცია ისე, რომ შეგვეძლოს ამ კლასის ორი instance-ის შედარება ტოლობაზე.

“თუ ორი ობიექტი არის ტოლი, ანუ obj1.equals(obj2) აბრუნებს true-ს, მაშინ obj1.hashCode() და obj2.hashCode() დააბრუნებს ერთსა და იმავე int-ს.”

როცა ჩვენ გადავფარავთ equals() მეთოდს, მაშნ ჩვენ აუცილებლად უნდა გადავფაროთ hashCode() მეთოდიც.hashCode() გამოიყენება რომ გამოვთვალოთ position bucket და გასაღებები.

7) რა არის Java-ში Priority Queue ? 

Java PriorityQueue არის მონაცემთა სტრუქტურა რომელიც არის ნაწილი Java Collection-ისა. ეს არის Queue ინტერფეისის იმპლემენტაცია, რომელშიც ელემენტების თანმიმდევრობა წყდება ელემენტების პრიორიტეტების მიხედვით. როცა ვახდენთ Instatiate-ს PriorityQueue-ის კონსტრუქტორში შეიძლება გამოყენებული იქნას Comparator-ი, რომელიც “გადაწყვეტს” ელემენტების მიმდევრობას მოცემული instance-სთვის.

8) რა განსხვავებაა ArrayList-სა და Vector-ს შორის ? 

  • Vector არის synchronized, ხოლო ArrayList-ი არა.
  • Vector-ის ზომა გაზრდისას ორმაგდება, ArrayList-ისა კი იზრდება 1.5-ჯერ.
  • ArrayList-ი გვთავაზობს უკეთეს performace-ს ვიდრე Vector.
  • ArrayList-ი ჯავაში არის 1.2 ვერსიიდან, ხოლო ვექტორი უფრო წინა ვერსიაშიც იყო, მაგრამ თავდაპირველად Vector-ი არ ყოფილა Java Collection-ის ნაწილი, ის ამ framework-ის ნაწილი მოგვიანებით გახდა.
  • დღესდღეისობით Vectori-ი ითვლება როგორც deprecated და მისი გამოყენება აუცილებლობას არ წარმოადგენს.

9) რა არის Java Concurrent Collection კლასები ? 

Concurrent Collections ჯავაში გამოჩნდა Java5 ვერსიიდან ანოტაციებთან და generic-ებთან ერთად. ეს კლასები არის java.util.concurrent. ეს კლასები გვეხმარება შევამციროთ შაბლონური concurrency კოდის წერა (თავი ავარიდოთ მას). მნიშვნელოვანი Concurrent Collection კლასებია : BlockingQueue, ConcurrentMap, ConcurrentNavigableMap და ExecutorService.

10) განმარტეთ Comparable და Comparator.

კლასმა შეიძლება იმპლემენტაცია გაუკეთოს Comparable ინტერფეისს იმისთვის, რომ განსაზღვროს ობიექტების მიმდევრობა. მაგალითად რომ ავიღოთ String-ების list-ი და დავალაგოთ ის დალაგდება ანბანის მიხედვით, რადგან String კლასი იმპლემენტაციას უკეთებს Comparable ინტერფეისს და მასში გადაფარულია compareTo() მეთოდი. ჩვენ შეგვიძლია გამოვიყენოთ ორი String-ის შედარება ასე :

str1.compareTo(str2);

მაგრამ თუ გვინდა რომ String-ები შევადაროთ მათი ზომის მიხედვით ? ამ შემთხვევაში ვქმნით კლასს, რომელიც იმპლემენტაციას გაუკეთებს Comparator ინტერფეისს და გადავფარავთ compare მეთოდს, დალაგებისას კი დავწერთ:
Collections.sort(listOfStrings,comparatorObject);

Leave a Reply / უპასუხე

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / შეცვლა )

Twitter picture

You are commenting using your Twitter account. Log Out / შეცვლა )

Facebook photo

You are commenting using your Facebook account. Log Out / შეცვლა )

Google+ photo

You are commenting using your Google+ account. Log Out / შეცვლა )

Connecting to %s