JavaでLinkedBlockingDequeを使う方法は何ですか。
LinkedBlockingDequeは、Javaで使用されるFIFO(First-In-First-Out)両端キューであり、リンクリストを用いて実装されています。
LinkedBlockingDequeの一部の一般的なメソッドと使用例は以下の通りです:
- LinkedBlockingDequeオブジェクトを作成する:
- リンク済みのブロッキングデック deque = new LinkedBlockingDeque<>();
- 要素を追加します。
- addFirst(E e):要素をキューの先頭に追加します。
- addLast(E e): リストの末尾に要素を追加します。
- offerFirst(E e):キューの先頭に要素を追加し、キューが満杯の場合はfalseを返します。
- offerLast(E e):要素をキューの末尾に追加し、キューが満杯の場合はfalseを返します。
- 要素の取得と削除:
- removeFirst()は、キューの先頭の要素を取得して削除します。
- removeLast()メソッド:キューの末尾の要素を取得して削除します。
- pollFirst()は、キューの先頭要素を取得して削除し、キューが空の場合はnullを返します。
- pollLast()メソッドは、キューの末尾の要素を取得および削除し、キューが空の場合はnullを返します。
- 要素を取得するが、削除しない。
- getFirst():キューの先頭要素を取得しますが、削除はしません。
- getLast():キューの末尾の要素を取得しますが、削除はしません。
- peekFirst()メソッドは、キューの先頭の要素を取得するが削除はしない。キューが空の場合はnullを返す。
- peekLast()メソッド:キューの末尾の要素を取得しますが、削除はしません。キューが空の場合はnullを返します。
- 制限方法:
- putFirst(E e):キューの先頭に要素を追加し、キューがいっぱいの場合はブロックされます。
- putLast(E e):要素をキューの末尾に追加して、キューが満杯の場合はブロックして待機します。
- takeFirst()メソッドは、キューの先頭の要素を取得して削除し、キューが空の場合はブロックして待機します。
- takeLast():キューの末尾の要素を取得して削除し、キューが空の場合はブロックして待機します。
LinkedBlockingDequeはスレッドセーフであり、複数のスレッドが同時に操作することができます。