ûÓÐjavaÊý¾Ý½á¹¹µÄ»ù´¡£¬ÈçºÎÓÅ»¯AndroidÓ¦ÓõÄÐÔÄÜ£¿ÔÚʵ¼ÊÉú»îÖУ¬¶ÓÁÐÓÐ׏㷺µÄÓ¦Óã¬ÀýÈçÅŶӹºÎÎÄÕ´òÓ¡£¬¶¼×ñÑ×ŶÓÁÐÏȽøÏȳöµÄÔÔò¡£¶ÓÁÐqueueÔÚÎÒÃÇHandel looper threadÄÇÕÂÖÐÎÒÃǽ²½â¹ý£¬½ñÌìÎÒÃÇÖصã½âÎöÏÂQueueµÄÐÔÖÊ¡£
¶ÓÁÐ(Queue)Ò²ÊÇÒ»ÖÖÔËËãÊÜÏÞµÄÏßÐÔ±í¡£ËüÖ»ÔÊÐíÔÚ±íµÄÒ»¶Ë½øÐвåÈ룬¶øÔÚÁíÒ»¶Ë½øÐÐɾ³ý¡£ÔÊÐíɾ³ýµÄÒ»¶Ë³ÆΪ¶ÓÍ·(front)£¬ÔÊÐí²åÈëµÄÒ»¶Ë³ÆΪ¶Óβ(rear)¡£
˳Ðò queueµÄÏà¹Ø¸ÅÄî< http://www.2cto.com/kf/ware/vc/" target="_blank" class="keylink">vcD4KPHA+PC9wPgoKPHA+ICAgICAgICA/vfjQ0LLlyOuy2df3tcS2y7PGzqq2086yo6y9+NDQyb6z/bLZ1/e1xLbLs8bOqrbTzbehozwvcD4KCgo8cD4gICAgICAgID+208HQ1tDDu9PQ1KrL2Mqxo6yzxs6qv9W208HQoaM8L3A+CgoKPHA+ICAgICAgICA/ttPB0L/VtcTM9bz+o7ogIGZyb250ID0gcmVhcjwvcD4KCgo8cD4gICAgICAgID+208HQwvq1xMz1vP6juiAgcmVhciA9IE1BWFNJWkU8L3A+Cgo8cD48L3A+CjxwPiAgICAgICC008nPyvbP4LnYuMXE7tbQo6zLs9DyttPB0NPQ0ru49rrctPO1xM7KzOKjrMjd0tez9s/WvNnS56OsyOfPws28y/nKvqGjPC9wPgo8cD48aW1nIHNyYz0="https://www.cppentry.com/upload_files/article/76/1_rxlq8__.jpg" alt="\">
Òò´Ë£¬ÎÒÃÇÉè¼ÆÁËÑ»·¶ÓÁУ¬½«ÏòÁ¿¿Õ¼äÏëÏóΪһ¸öÊ×βÏà½ÓµÄÔ²»·£¬²¢³ÆÕâÖÖÏòÁ¿ÎªÑ»·ÏòÁ¿¡£×¢ÒâÑ»·¶ÓÁÐ µÄ¶ÓÁÐÂúµÄÌõ¼þΪ(rear+1)%MaxSize=front£¬ÎªÁ˱ÜÃâÓë¶Ó¿ÕÌõ¼þ³åÍ»£¬Ô¤ÁôÁËÒ»¸ö¿Õ¼ä¡£
ÏÂÃæÎÒÃÇÀ´¿´Ò»ÏÂÈçºÎʵÏÖÉÏÊöµÄÑ»·¶ÓÁС£
package c;
public class SeqQueue
implements QQueue
{ private Object[] element; private int front, rear; public SeqQueue(int size) { // TODO Auto-generated constructor stub this.element = new Object[Math.abs(size)]; this.front = this.rear = 0; } //¹¹ÔìÒ»¸ö¿ÕµÄ·½·¨£¬Ä¬ÈÏ´óСΪ64 public SeqQueue() { // TODO Auto-generated constructor stub this(64); } //Åж϶ÓÁÐÊÇ·ñΪ¿Õ @Override public boolean isEmpty() { // TODO Auto-generated method stub return this.front == this.rear; } //Èë¶Ó²Ù×÷ @Override public void enqueue(T x) { // TODO Auto-generated method stub if (x == null) return; //ÈçºÎ¶ÓÁÐÒÑÂú£¬ÖØÐÂÉêÇëÒ»¸öÁ½±¶µÄ¿Õ¼ä if (this.front == (this.rear + 1) % element.length) { Object[] temp = this.element; this.element = new Object[temp.length * 2]; int i = this.front; int j = 0; while (i != this.rear) { this.element[i] = temp[i]; i = (i + 1) % temp.length; j++; } this.front = 0; this.rear = j; } this.element[this.rear] = x; this.rear = (this.rear + 1) % element.length; } //³ö¶Ó²Ù×÷ @Override public T dequeue() { // TODO Auto-generated method stub if (isEmpty()) return null; @SuppressWarnings("unchecked") T temp = (T) this.element[this.front]; this.front = (this.front + 1) % this.element.length; return temp; } //´òÓ¡¶ÓÁÐ public String toString() { String s = "("; if (!isEmpty()) { s = s + this.element[this.front].toString(); int i = (this.front + 1) % this.element.length; while (i != this.rear) { s = s + this.element[i].toString(); i = (i + 1) % this.element.length; } } return s + ")"; } //²âÊÔÉÏÊö·½·¨ public static void main(String args[]) { SeqQueue
queue = new SeqQueue
(64); for (int i = 0; i < 10; i++) { queue.enqueue("a" + i); } System.out.print(queue.toString()); } }