Queue ინტერფეისი ჯავაში

java.util.Queue ინტერფეისი არის java.util.Collection ინტერფეისის მემკვიდრე(ქვეტიპი). ის წარმოადგენს დალაგებული ობიექტების სიას, როგორიცაა მაგალითად List, მაგრამ queue-ს გამოყენება მკვეთრად განსხვავებულია. ეს მონაცემთა სტრუქტურა ისეა მოწყობილი, რომ ელემენტი ემატება ბოლოში და ელემენტი იშლება ტავიდან. სხვა სიტყვებით რომ ვთქვათ, როგორც ამას კომპიუტერულ მეცნიერებებში უწოდებენ, queue მოქმედებს LIFO (Last In – First Out) პრინციპით.

ახლა განვიხილოთ queue-ს იმპლემენტაციები. რადგან ეს არის ინტერფეისი, მისი მეთოდების გამოსაყენებლად ჩვენ უნდა მოვახდინოთ რაიმე კონკრეტული კლასით მისი იმპლემენტაცია. ძირითადად არჩევანს აკეთებენ ორ კლასს შორის : java.util.LinkedList-სა და java.util.PriorityQueue-ს შორის. მაგრამ არის java.util.concurrent პაკეტში სხვა იმპლემენტაციები, რომლებსაც ამ პოსტში არ განვიხილავთ. ახლა ვნახოთ queue-ს შექმნის მაგალითი :

1

queue-ში ელემენტის დასამატებლად ჩვენ ვიძახებთ add(Object o) მეთოდს, მაგრამ არის ამ მეთოდის ალტერნატიული მეთოდი offer(Object o). ელემენტების თანმიმდევრობა queue-ში დამოკიდებულია იმაზე, თუ როგორ არის იმპლემენტირებული queue.თუ queue იმპლემენტირებულია LinkedList-ით მაშინ element() მეთოდი მოგცვემს queue-ს პირველ ელემენტს. ამ მეთოდის ალტერნატივა არის peek() მეთოდი. რაც შეეხება რიგიდან ელემენტის წაშლას, ამას აკეთებს remove() მეთოდი. როგორც ელემენტის ამოღებისას, წაშლაც ხდება პირველი ელემენტისა. ამ მეთოდის ალტერნატიული მეთოდია poll() მეთოდი. queue-ს ელემენტების შემოვლა შეიძლება იტერატორითაც. მოდით ახლა ვნახოთ ყველა ამ განხილული მეთოდის გამოყენება პრაქტიკულად.

2აქ იქმნება სამი ობიექტი Person კლასის, რომელსაც აქვს getName(), getSurname() და getAge() მეთოდები. ამ სამ ობიექტს ვამატებთ queue-ში , შემდეგ ვბეჭდავთ queue-ს ზომას, შემდეგ ვიღებთ queue-დან პირველ ელემენტს და ვიძახებთ Person კლასის სამივე მეთოდს და ვბეჭდავთ. ამის შემდეგ ვშლით პირველ ელემენტს და ვიძახებთ ისევ რიგის ზომის ფუნქცია და ვბეჭდავთ მას.

3აქ უკვე queue-ს შემოვლას ვახორციელებთ იტერატორით, რომელსაც აქვს hasNext() მეთოდი და თუ მომდევნო ელემენტი არსებობს აბრუნებს True-ს , თუ არა და False-ს. ადვილი მისახვედრია, რომ ამ კოდით ვახორციელებთ queue-ს ელემენტების (პერსონების) სახელების ბეჭდვას.

4ამ კოდის გარჩევა ალბათ არ გაგვიჭირდება, სანამ რიგი ცარიელი არ არის, ვიღებთ რიგიდან პირველ ელემენტს, ვბეჭდავთ ამ ელემენტის (ამ შემთხვევაში პერსონის) სახელს , შემდეგ კი ვშლით ამ ელემენტს რიგიდან. ბოლოს ციკლის დამთავრების შემდეგ ვბეჭდავთ რიგის ზომას.

 

 

კითხვის არსებობის შემთხვევაში გთხოვთ დაწეროთ კომენტარის სახით და მალევე გიპასუხებთ🙂

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