java中のスタックとキューの実装とAPIの使用法


javaではスタックとキューを実現するには、javaの集合に関する知識、特にStck、LinkdListなどの関連する集合タイプが必要です.
一、スタックの実現
スタックの実装には、2つの方法があります.一つは、java自身のセットタイプStockタイプを使用します.もう一つは、LinkdListを借りて間接的にStckを実現することです.
1.Stck実現
Stockに関する具体的な知識は参考できます.http://www.cnblogs.com/skywang12345/p/3308852.html  
直接Stckで実現するのはとても便利です.一般的なapi関数は以下の通りです.
       boolean             isEmpty() //          
synchronized E             peek() //        
synchronized E             pop() //           
             E             push(E object) //       
synchronized int           search(Object o)  //          ,         
2.Linked List実現
Linked List は、AbstractSequentialListに続く双方向チェーンです.スタック、キュー、または二重端列としても動作可能である.Linked List 実現する List インターフェイスは、キュー操作ができます.Linked List 実現する Deque インターフェースは、LinkdListをダブルエンドキューとして使用することができます.
Linked Listがスタックとして使われる場合、apiと対応関係は以下の通りです.
         
push(e)      addFirst(e)
pop()        removeFirst()
peek()       peekFirst()
      isEmpty()  //      
二、行列の実現
javaにはQueインターフェースがありますが、単一javaは具体的な列実現クラスを与えていません.JavaではLinkdListクラスにQueインターフェースを実現させています.だから、列を使う時にはLinked Listを採用します.Linked Listは双方向リンクなので、キューのすべての機能を簡単に実現できます.
Queueは、Collectionのadd()とremove()の方法を避けるために、offer()を使って要素を加え、poll()を使って元素を取得して移動します.彼らの長所は、戻り値によって成功かどうか判断できます.add()とremove()方法は失敗した時に異常を投げます.この要素を除去せずに先端を使う場合は、element()またはpeek()の方法を使用します.
javaで定義されているキューは、一般的に、Que<E>queue=new Linked List<E>()と定義されている.
Linked Listを採用して実現すると、apiの使用と使用関係は以下の通りである.
         
offer(e)      offer(e)/offerLast(e)  //   ,         
poll()        pollFirst()  //           
peek()        peekFirst()  //        
       isEmpty() //