Queue.java
public interface Queue<E> extends Collection<E> { E element(); boolean offer(E e); E peek(); E poll(); E remove(); }Queue ၏ လုပ်ဆောင်ချက်များသည် များသောအား ဖြင့် ပုံစံ ၂ခု ပံ့ပိုးထားသည်က များ၏။
- လုပ်ဆောင်ချက်အား လုပ်ဆောင်၍ မအောင်မြင်သော အခါ Exception အား Throw လုပ်သည့် ပုံစံ။
- လုပ်ဆောင်ချက်အား လုပ်ဆောင်၍ မအောင်မြင်သော အခါသတ်မှတ်ထားသော တန်ဖိုးတစ်ခုအား (null, false ဒါမှမဟုတ် တစ်ခုခု) return ပြန်လုပ်သည့် ပုံစံ
Type of Operation | Throws exception | Returns special value |
---|---|---|
Insert | add(e) |
offer(e) |
Remove | remove() |
poll() |
Examine | element() |
peek() |
Queue များသည် များသောအားဖြင့် ၎င်း၏ Element များအား FIFO (First-In-First-Out) စီနည်းကို အသုံးပြု၍ စီစဉ်ထား၏။ သို့ရာတွင် Priority Queue ကဲ့သို့ အချို့သော Queue များမှာမူ၊ Element ရဲ့ တန်ဖိုးအပေါ်မှုတည်ပြီး Order လုပ်လေ့ရှိ၏။ သို့ရာတွင် မည်သည့် Queue မဆို ၎င်းတို့၏ Element များ၏ ဦးတည်ရာသည် Queue#remove နှင့် Queue#pull အား ခေါ်ဆိုမည့် ဘက်သို့ ဦးတည်ထားကြပါသည်။ FIFO Queue တစ်ခုမှာတော့ အသစ် Insert လုပ်သည့် Element များအား Order ၏ နောက်ဆုံးတွင် ဖြည့်စွက်ပါသည်။ အခြားသော Queue များဆိုပါက ၎င်းတို့ ကိုယ်ပိုင် သတ်မှတ်ချက် နည်းလမ်းများဖြင့် နေရာချထား လေ့ရှိ၏။ ထို့ကြောင့် Queue Implementations များဟာ Ordering Properties များအပေါ်မှုတည်၍ ကန့်သန့် ရေးသားသင့် ပေသည်။
တဖန် Implementation များတွင် ပါဝင်သော Element အရေအတွက်အား ကန့်သတ်နိုင်ပါသေးသည်။ ဤကဲ့သို့ ကန့်သတ်ထားသော Queue များအား Bounded ဟု ခေါ်ဆိုလေ့ရှိ၏။ java.concurrent Package အောက်တွင် ပါဝင်သော Queue များမှာ Bounded များဖြစ်ကြပြီး၊ java.util Package အောက်ရှိ Queue Implementation များမှာ Bounded များ မဟုတ်ကြပါ။
Collection Interface မှ အမွေးဆက်ခံထားသော add လုပ်ဆောင်ကို အသုံးပြု၍ Queue ၏ အရေအတွက် ကန့်သတ်ချက် ကျော်လွန်၍ Element များအား Insert လုပ်ပါက IllegalStatteException အား Throw လုပ်မည်ဖြစ်သည်။ အကယ်၍ အဆိုပါ အနေအထားမျိုးတွင် Queue#offer အား အသုံးပြုပါက Insert လုပ်၍မရကြောင်း false အား return လုပ်ခြင်း ဖြင့် အသိပေးမည် ဖြစ်ပါသည်။
Queue#remove နှင့် poll သည်လည်း Collection အတွင်းရှင် ဦးဆုံး Element အား ဖျက်ထုတ်ပြစ်ပြီး၊ ၎င်းအား return လုပ်မည် ဖြစ်သည်။ ကွာခြားသည်မှာ Collection အတွင်း Element က မရှိတော့သော အခါ ဖြစ်သည်။ ထိုအခါမျိုးတွင် remove အား ခေါ်ဆိုပါက NoSuchElementException အား throw လုပ်မည် ဖြစ်ပြီး၊ poll အား ခေါ်ဆိုပါက null အား return လုပ်မည် ဖြစ်ပါသည်။
Queue#element နှင့် peekသည်လည်း Headနေရာတွင်ရှိသော Element အား ပြန်ပေးမည် ဖြစ်သော်လည်း ဖျက်ထုတ်ပြစ်ခြင်း မရှိပါ။ Collection အတွင်း Elementမရှိသောအခါ element သည် NoSuchElementException အား throw လုပ်မည် ဖြစ်ပြီး၊ peek အား ခေါ်ဆိုပါက null အား return လုပ်မည် ဖြစ်ပါသည်။
များသောအားဖြင့် Queue များသည် Null အား add လုပ်၍မရပေ။ သို့ရာတွင် ခြွင်းချက်အနေဖြင့် LinkedList Implementation များသည် Null အား add လုပ်၍ရပါသည်။ poll နှင့် peek များသည် null အား အဓိပ္ပါယ်တစ်မျိုး အနေဖြင့်အသုံးပြု နေပါသဖြင့် ဤထူးခြားချက်အား အသုံးမပြုသင့်ပေ။
General Purpose Implementations
- LinkedList
LinkedList သည် Queue အင်တာဖေစ်အား Implement လုပ်ထားသော General Purpose Implementation Class တစ်မျိုးဖြစ်ပြီး၊ FIFO (First-In-First-Out) Queue Ordering အား အသုံးပြုထား၏။ - PriorityQueue
PriorityQueue သည် Heap Data Structure ပုံစံအား အသုံးပြုထားသော Queue ရဲ့ General Purpose Implementation တစ်မျိုးဖြစ်၏။ Heap Data Structure ဆိုသည်မှာ Tree Data Structure ပုံစံရှိပြီး၊ Parent Node ဟာ Child Node ထက် တူရင်တူ၊ မတူရင်ပို၍ ကြီးရမည် ဟူသော သတ်မှတ်ချက်ရှိပါသည်။
CountDown.java
import java.util.LinkedList; import java.util.Queue; public class CountDown { public static void main(String[] args) throws InterruptedException { if(args.length < 1) System.err.println("Please set the time to count!"); Queue<Integer> que = new LinkedList<>(); for(int i=Integer.parseInt(args[0]); i > 0; i--) que.offer(i); while(!que.isEmpty()) { System.out.println(que.poll()); Thread.sleep(1000); } } }ကွန်ပိုင်းလုပ်၍ အလုပ်ခိုင်းကြည့်သော အခါ အောက်ပါအတိုင်း အလုပ်လုပ်နိုင်သည်ကို တွေ့ရပါမည်။
ဆက်ပါဦးမည်။ လေးစားစွာဖြင့်။
မင်းလွင်
Hey, I think your blog might be having browser compatibility issues.
ReplyDeleteWhen I look at your website in Ie, it looks fine but when opening in Internet Explorer,
it has some overlapping. I just wanted to give you a quick heads up!
Other then that, wonderful blog!
Excellent write-up. I absolutely love this site.
ReplyDeleteKeep it up!
My brother suggested I might like this blog. He was totally right.
ReplyDeleteThis post truly made my day. You can not imagine
just how much time I had spent for this info! Thanks!
Hello colleagues, its fantastic article on the topic of
ReplyDeleteeducationand fully explained, keep it up all the time.
Very rapidly this web site will be famous amid all blog
ReplyDeleteusers, due to it's nice articles
Hello! This is my first visit to your blog! We are a group
ReplyDeleteof volunteers and starting a new initiative in a community in the same niche.
Your blog provided us useful information to work on. You have done a extraordinary
job!
Thank you for the auspicious writeup. It in fact was a amusement account
ReplyDeleteit. Look advanced to more added agreeable from you! However, how can we communicate?
After looking into a few of the articles on your web site, I seriously like your way of
ReplyDeleteblogging. I saved as a favorite it to my bookmark website list and will be checking back in the near future.
Please check out my website as well and tell
me your opinion.
I don't even know how I ended up here, but I thought this post was great.
ReplyDeleteI do not know who you are but definitely you are going to a famous
blogger if you aren't already ;) Cheers!
Hi there I am so delighted I found your weblog, I
ReplyDeletereally found you by error, while I was browsing on Google for something else, Anyways I am here now and would just like to say cheers for a fantastic post and
a all round exciting blog (I also love the theme/design),
I don’t have time to read through it all at the minute but
I have saved it and also included your RSS feeds, so when I have time I
will be back to read a lot more, Please do keep up
the excellent jo.
This excellent website certainly has all the information I wanted concerning this subject and didn't know
ReplyDeletewho to ask.
If some one wants expert view about blogging then i suggest him/her to go to
ReplyDeletesee this blog, Keep up the nice job.
Hello! Would you mind if I share your blog with my myspace group?
ReplyDeleteThere's a lot of folks that I think would really appreciate your content.
Please let me know. Cheers
Hello! This is my 1st comment here so I just wanted to give
ReplyDeletea quick shout out and say I genuinely enjoy reading your posts.
Can you recommend any other blogs/websites/forums that go over
the same topics? Appreciate it!
With havin so much content and articles do you ever run into any problems
ReplyDeleteof plagorism or copyright violation? My website has a lot of unique content I've either authored
myself or outsourced but it seems a lot of it is popping it up
all over the internet without my authorization. Do you know any methods to help
prevent content from being ripped off? I'd definitely appreciate it.
I constantly emailed this website post page to all my associates, for the reason that if like
ReplyDeleteto read it after that my contacts will too.
You could definitely see your expertise within the work you write.
ReplyDeleteThe sector hopes for even more passionate writers like you who aren't afraid to say how they
believe. Always go after your heart.
Nice blog here! Also your website loads up very fast!
ReplyDeleteWhat host are you using? Can I get your affiliate link to your host?
I wish my site loaded up as quickly as yours lol