java中のスタックとキューの実装とAPIの使用法
2761 ワード
javaではスタックとキューを実現するには、javaの集合に関する知識、特にStck、LinkdListなどの関連する集合タイプが必要です.
一、スタックの実現
スタックの実装には、2つの方法があります.一つは、java自身のセットタイプStockタイプを使用します.もう一つは、LinkdListを借りて間接的にStckを実現することです.
1.Stck実現
Stockに関する具体的な知識は参考できます.http://www.cnblogs.com/skywang12345/p/3308852.html
直接Stckで実現するのはとても便利です.一般的なapi関数は以下の通りです.
Linked List は、AbstractSequentialListに続く双方向チェーンです.スタック、キュー、または二重端列としても動作可能である.Linked List 実現する List インターフェイスは、キュー操作ができます.Linked List 実現する Deque インターフェースは、LinkdListをダブルエンドキューとして使用することができます.
Linked Listがスタックとして使われる場合、apiと対応関係は以下の通りです.
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の使用と使用関係は以下の通りである.
一、スタックの実現
スタックの実装には、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() //