आप Queue interface लागू करने वाले किसी भी वर्ग की तलाश में हैं, PriorityQueue
और PriorityBlockingQueue
को छोड़कर, जो फीफो एल्गोरिदम का उपयोग नहीं करते हैं।
LinkedListadd
(अंत में एक जोड़ता है) और removeFirst
(सामने से एक को हटा देता है और इसे वापस करता है) का उपयोग करने का सबसे आसान उपयोग करने वाला है। (
import java.util.LinkedList;
class Test {
public static void main(String args[]) {
char arr[] = {3,1,4,1,5,9,2,6,5,3,5,8,9};
LinkedList<Integer> fifo = new LinkedList<Integer>();
for (int i = 0; i < arr.length; i++)
fifo.add (new Integer (arr[i]));
System.out.print (fifo.removeFirst() + ".");
while (! fifo.isEmpty())
System.out.print (fifo.removeFirst());
System.out.println();
}
}
वैकल्पिक रूप से, अगर आप आप केवल एक कतार के रूप में यह इलाज करना चाहते हैं पता :
उदाहरण के लिए, यहाँ एक कार्यक्रम कतार और पीआई के अंकों को पुनः प्राप्त करने एक LinkedList का उपयोग करता है है
import java.util.LinkedList;
import java.util.Queue;
class Test {
public static void main(String args[]) {
char arr[] = {3,1,4,1,5,9,2,6,5,3,5,8,9};
Queue<Integer> fifo = new LinkedList<Integer>();
for (int i = 0; i < arr.length; i++)
fifo.add (new Integer (arr[i]));
System.out.print (fifo.remove() + ".");
while (! fifo.isEmpty())
System.out.print (fifo.remove());
System.out.println();
}
}
यह एक का लाभ दिया है: एक लिंक्ड सूची के अतिरिक्त सुविधाओं) के बिना, आप बस Queue
इंटरफ़ेस ही उपयोग कर सकते हैं आपको कोड को बदलने के बिना, Queue
इंटरफ़ेस प्रदान करने वाले किसी भी वर्ग के साथ अंतर्निहित कंक्रीट कक्षा को प्रतिस्थापित करने की इच्छा है।
बुनियादी परिवर्तन एक Queue
को fifo
का प्रकार बदलने के लिए और remove()
बजाय removeFirst()
, बाद उपयोग करने के लिए Queue
इंटरफेस के लिए उपलब्ध नहीं किया जा रहा है।
कॉलिंग isEmpty()
अभी भी ठीक है क्योंकि Collection
इंटरफेस से संबंधित है Queue
एक व्युत्पन्न है।
फिर फीफो को कतार क्यों नहीं बनाते? ठोस कार्यान्वयन के बजाय इंटरफ़ेस को लक्षित करें। –
@ एडम, अच्छा बिंदु, मैंने इसे एक विकल्प के रूप में प्रदान किया है। – paxdiablo
यदि आप वास्तव में आइटम को हटाए बिना किसी फीफो तरीके से कतार में आइटमों को फिर से चालू करना चाहते हैं, तो आप केवल 'ऑब्जेक्ट आइटम: कतार)' के लिए कर सकते हैं, और यह उन पर एक फीफो तरीके से फिर से चालू हो जाएगा कम से कम जेडीके 7 पर और 'ArrayDeQueue' और' LinkedList' impl के साथ। –