import java.util.LinkedList;
import java.util.Queue;
public class CustomQueue<T> {
private Queue<T> queue;
// コンストラクタ
public CustomQueue() {
this.queue = new LinkedList<>();
}
// ã‚ューã«è¦ç´ ã‚’è¿½åŠ ã™ã‚‹ãƒ¡ã‚½ãƒƒãƒ‰
public void enqueue(T element) {
queue.add(element);
}
// ã‚ューã‹ã‚‰è¦ç´ ã‚’å–り出ã—ã€å–り出ã—ãŸè¦ç´ ã‚’è¿”ã™ãƒ¡ã‚½ãƒƒãƒ‰
public T dequeue() {
if (isEmpty()) {
// ã‚ューãŒç©ºã®å ´åˆã¯ä¾‹å¤–をスãƒãƒ¼
throw new IllegalStateException("Queue is empty");
}
return queue.poll();
}
// ã‚ューãŒç©ºã‹ã©ã†ã‹ã‚’判定ã™ã‚‹ãƒ¡ã‚½ãƒƒãƒ‰
public boolean isEmpty() {
return queue.isEmpty();
}
}
ã“ã®ã‚¯ãƒ©ã‚¹ã¯ã€ã‚¸ã‚§ãƒãƒªã‚¯ã‚¹ã‚’使用ã—ã¦è¦ç´ ã®åž‹ã‚’指定ã§ãるよã†ã«ãªã£ã¦ã„ã¾ã™ã€‚enqueue メソッドã§è¦ç´ ã‚’è¿½åŠ ã—ã€dequeue メソッドã§è¦ç´ ã‚’å–り出ã—ã¾ã™ã€‚isEmpty メソッドã§ã‚ューãŒç©ºã‹ã©ã†ã‹ã‚’判定ã—ã¾ã™ã€‚
Queueã¨Deque
- Queue (ã‚ュー):
- ã‚ューã¯ã€è¦ç´ ãŒå…ˆå…¥ã‚Œå…ˆå‡ºã—(FIFO)ã®ãƒ‡ãƒ¼ã‚¿æ§‹é€ ã§ã™ã€‚
- æ–°ã—ã„è¦ç´ ã¯ã‚ãƒ¥ãƒ¼ã®æœ«å°¾ã«è¿½åŠ ã•れã€å–り出ã™ã¨ãã¯å…ˆé ã‹ã‚‰å–り出ã•れã¾ã™ã€‚
enqueueメソッドã§è¦ç´ ã‚’è¿½åŠ ã—ã€dequeueメソッドã§å…ˆé ã®è¦ç´ ã‚’å–り出ã—ã¾ã™ã€‚- 例: レストランã®å¾…ã¡è¡Œåˆ—ã®ã‚ˆã†ã«ã€æœ€åˆã«æ¥ãŸäººãŒæœ€åˆã«ã‚µãƒ¼ãƒ“スをå—ã‘るイメージã§ã™ã€‚
- Deque (デック):
- デックã¯ã€ä¸¡ç«¯ã‚ュー(Double-Ended Queue)ã®ç•¥ã§ã€ã‚ューã¨ã‚¹ã‚¿ãƒƒã‚¯ã®æ©Ÿèƒ½ã‚’ä½µã›æŒã£ãŸãƒ‡ãƒ¼ã‚¿æ§‹é€ ã§ã™ã€‚
- å…ˆé ã¨æœ«å°¾ã®ä¸¡æ–¹ã‹ã‚‰è¦ç´ ã®è¿½åŠ ãƒ»å–り出ã—ãŒã§ãã¾ã™ã€‚
enqueueã¨dequeueã®ä»–ã«ã€å…ˆé ã‹ã‚‰ã®è¦ç´ ã®å–り出㗠(pollFirst) や末尾ã‹ã‚‰ã®è¦ç´ ã®å–り出㗠(pollLast) ãŒå¯èƒ½ã§ã™ã€‚- 例: ãƒãƒƒãƒ•ã‚¡ã®å…ˆé や末尾ã‹ã‚‰ãƒ‡ãƒ¼ã‚¿ã‚’挿入ã¾ãŸã¯å‰Šé™¤ã™ã‚‹å ´åˆã«ä¾¿åˆ©ã§ã™ã€‚
- å…±é€šã®æ“作:
- ã‚ューã¨ãƒ‡ãƒƒã‚¯ã¯ã©ã¡ã‚‰ã‚‚ã€è¦ç´ ã®è¿½åŠ ã‚„å–り出ã—ã®åŸºæœ¬çš„ãªæ“作をæä¾›ã—ã¾ã™ã€‚
isEmptyメソッドã§ç©ºã‹ã©ã†ã‹ã‚’判定ã§ãã¾ã™ã€‚
- Javaã®å®Ÿè£…:
- Javaã§ã¯ã€
Queueインターフェースã¨ãã®ã‚µãƒ–インターフェースã§ã‚ã‚‹Dequeã‚¤ãƒ³ã‚¿ãƒ¼ãƒ•ã‚§ãƒ¼ã‚¹ãŒæä¾›ã•れã¦ã„ã¾ã™ã€‚ - 具体的ãªå®Ÿè£…クラスã¨ã—ã¦ã€
LinkedListãŒã‚ˆã利用ã•れã¾ã™ã€‚ LinkedListã¯Queueインターフェースã¨Dequeインターフェースを実装ã—ã¦ãŠã‚Šã€ä¸¡è€…ã®æ©Ÿèƒ½ã‚’æä¾›ã—ã¾ã™ã€‚
- Javaã§ã¯ã€
- é¸æŠžã®ãƒã‚¤ãƒ³ãƒˆ:
- ã‚ューã‹ãƒ‡ãƒƒã‚¯ã‹ã¯ã€ä½¿ç”¨ã™ã‚‹ã‚±ãƒ¼ã‚¹ã«ã‚ˆã‚Šã¾ã™ã€‚ãƒ‡ãƒ¼ã‚¿ã®æ“作ãŒã‚ューã®ã‚ˆã†ã«å…ˆå…¥ã‚Œå…ˆå‡ºã—ã§å分ãªå ´åˆã¯ã‚ューを使用ã—ã€ä¸¡ç«¯ã‹ã‚‰ã®æ“作ãŒå¿…è¦ãªå ´åˆã¯ãƒ‡ãƒƒã‚¯ã‚’使用ã—ã¾ã™ã€‚
ã“ã®ã‚ˆã†ã«ã€Queueã¨Dequeã¯ãƒ‡ãƒ¼ã‚¿ã®æ“作ã®ç‰¹æ€§ã«ã‚ˆã£ã¦é¸æŠžã•れã€Javaã§ã¯ã“ã‚Œã‚‰ã®æ©Ÿèƒ½ã‚’æä¾›ã™ã‚‹ãŸã‚ã®ã‚¤ãƒ³ã‚¿ãƒ¼ãƒ•ェースã¨å®Ÿè£…クラスãŒç”¨æ„ã•れã¦ã„ã¾ã™ã€‚
Queueã¨Dequeã¯ãƒ‡ãƒ¼ã‚¿ã®åŠ¹çŽ‡çš„ãªæ“作をå¯èƒ½ã«ã™ã‚‹é‡è¦ãªãƒ‡ãƒ¼ã‚¿æ§‹é€ ã§ã™ã€‚Queueã¯FIFO(先入先出)ã®ç‰¹æ€§ã‚’æŒã¡ã€ãƒ‡ãƒ¼ã‚¿ã‚’é †ç•ªã«å‡¦ç†ã™ã‚‹éš›ã«æœ‰ç”¨ã§ã™ã€‚一方ã€Dequeã¯å…ˆé ã¨æœ«å°¾ã®ä¸¡æ–¹ã‹ã‚‰ã®æ“作ãŒå¯èƒ½ã§ã€æŸ”軟性ãŒé«˜ã„ã§ã™ã€‚Javaã®æ¨™æº–ライブラリã§ã¯ã€ã“ã‚Œã‚‰ã®æ¦‚念をサãƒãƒ¼ãƒˆã™ã‚‹ãŸã‚ã«Queueインターフェースã¨Dequeã‚¤ãƒ³ã‚¿ãƒ¼ãƒ•ã‚§ãƒ¼ã‚¹ãŒæä¾›ã•れã€LinkedListãªã©ã®å…·ä½“çš„ãªå®Ÿè£…クラスãŒåˆ©ç”¨ã§ãã¾ã™ã€‚
プãƒã‚°ãƒ©ãƒ ã®ä¸ã§ã“れらã®ãƒ‡ãƒ¼ã‚¿æ§‹é€ ã‚’é©åˆ‡ã«ä½¿ç”¨ã™ã‚‹ã“ã¨ã§ã€ãƒ‡ãƒ¼ã‚¿ã®è¿½åŠ ã‚„å–り出ã—を効率的ã«è¡Œã†ã“ã¨ãŒã§ãã¾ã™ã€‚データ処ç†ã®ç‰¹æ€§ã«å¿œã˜ã¦Queueã‚„Dequeã‚’é¸æŠžã—ã€é©åˆ‡ã«åˆ©ç”¨ã™ã‚‹ã“ã¨ã§ã€ãƒ—ãƒã‚°ãƒ©ãƒ ã®ãƒ‘フォーマンスやå¯èªæ€§ã‚’å‘上ã•ã›ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚
「020 コレクションフレームワークã€å•題集リスト
🎯 実習ã§ç†è§£ã‚’æ·±ã‚よã†
ã“ã®å†…容ã«ã¤ã„ã¦JavaDrillã§å®Ÿéš›ã«æ‰‹ã‚’å‹•ã‹ã—ã¦å¦ç¿’ã§ãã¾ã™


コメント