Deque라는 인터페이스는 java.util 패키지에 있습니다. 인터페이스 대기열의 하위 유형입니다. Deque는 데이터 구조의 양쪽 끝에서 요소 추가 및 제거를 지원합니다. 따라서 deque는 스택이나 큐로 사용될 수 있습니다. 우리는 스택이 LIFO(후입선출) 작업을 지원하고 대기열에서 선입선출 작업을 지원한다는 것을 알고 있습니다. deque는 두 가지를 모두 지원하므로 언급된 작업 중 하나를 수행할 수 있습니다. 데크는 의 약자이다. '이중 종료 대기열'.
Deque 인터페이스 선언
public interface Deque extends Queue
Java Deque 인터페이스의 방법
방법 | 설명 |
---|---|
부울 추가(객체) | 지정된 요소를 이 deque에 삽입하고 성공 시 true를 반환하는 데 사용됩니다. |
부울 제안(객체) | 이 deque에 지정된 요소를 삽입하는 데 사용됩니다. |
객체 제거() | 이 데크의 헤드를 검색하고 제거하는 데 사용됩니다. |
객체 폴링() | 이 deque의 헤드를 검색하고 제거하는 데 사용되며, 이 deque가 비어 있으면 null을 반환합니다. |
객체요소() | 이 데크의 헤드를 검색하는 데 사용되지만 제거하지는 않습니다. |
객체 엿보기() | 이 deque의 헤드를 검색하는 데 사용되지만 제거하지는 않습니다. 또는 이 deque가 비어 있는 경우 null을 반환합니다. |
객체 엿보기First() | 이 메서드는 데크의 헤드 요소를 반환합니다. 이 메서드는 데크에서 어떤 요소도 제거하지 않습니다. deque가 비어 있는 경우 이 메서드는 Null을 반환합니다. |
객체 peekLast() | 이 메서드는 deque의 마지막 요소를 반환합니다. 이 메서드는 데크에서 어떤 요소도 제거하지 않습니다. deque가 비어 있는 경우 이 메서드는 Null을 반환합니다. |
불리언 OfferFirst(e) | 대기열 앞에 요소 e를 삽입합니다. 삽입에 성공하면 true가 반환됩니다. 그렇지 않으면 거짓입니다. |
객체 제안마지막(e) | 대기열의 끝에 요소 e를 삽입합니다. 삽입에 성공하면 true가 반환됩니다. 그렇지 않으면 거짓입니다. |
ArrayDeque 클래스
우리는 Java에서 인터페이스 객체를 생성하는 것이 불가능하다는 것을 알고 있습니다. 따라서 인스턴스화를 위해서는 Deque 인터페이스를 구현하는 클래스가 필요하며 그 클래스는 ArrayDeque입니다. 사용량에 따라 늘어나고 줄어듭니다. 또한 AbstractCollection 클래스를 상속합니다.
ArrayDeque 클래스의 중요한 점은 다음과 같습니다.
- Queue와 달리 양쪽에서 요소를 추가하거나 제거할 수 있습니다.
- ArrayDeque에는 Null 요소가 허용되지 않습니다.
- ArrayDeque는 외부 동기화가 없으면 스레드로부터 안전하지 않습니다.
- ArrayDeque에는 용량 제한이 없습니다.
- ArrayDeque는 LinkedList 및 Stack보다 빠릅니다.
ArrayDeque 계층 구조
ArrayDeque 클래스의 계층 구조는 페이지 오른쪽에 표시된 그림에 나와 있습니다.
파이썬의 새 줄
ArrayDeque 클래스 선언
java.util.ArrayDeque 클래스 선언을 살펴보겠습니다.
public class ArrayDeque extends AbstractCollection implements Deque, Cloneable, Serializable
Java ArrayDeque 예
파일 이름: ArrayDequeExample.java
import java.util.*; public class ArrayDequeExample { public static void main(String[] args) { //Creating Deque and adding elements Deque deque = new ArrayDeque(); deque.add('Ravi'); deque.add('Vijay'); deque.add('Ajay'); //Traversing elements for (String str : deque) { System.out.println(str); } } }
산출:
Ravi Vijay Ajay
Java ArrayDeque 예: OfferFirst() 및 pollLast()
파일 이름: DequeExample.java
import java.util.*; public class DequeExample { public static void main(String[] args) { Deque deque=new ArrayDeque(); deque.offer('arvind'); deque.offer('vimal'); deque.add('mukul'); deque.offerFirst('jai'); System.out.println('After offerFirst Traversal...'); for(String s:deque){ System.out.println(s); } //deque.poll(); //deque.pollFirst();//it is same as poll() deque.pollLast(); System.out.println('After pollLast() Traversal...'); for(String s:deque){ System.out.println(s); } } }
산출:
After offerFirst Traversal... jai arvind vimal mukul After pollLast() Traversal... jai arvind vimal
Java ArrayDeque 예: 도서
파일 이름: ArrayDequeExample.java
import java.util.*; class Book { int id; String name,author,publisher; int quantity; public Book(int id, String name, String author, String publisher, int quantity) { this.id = id; this.name = name; this.author = author; this.publisher = publisher; this.quantity = quantity; } } public class ArrayDequeExample { public static void main(String[] args) { Deque set=new ArrayDeque(); //Creating Books Book b1=new Book(101,'Let us C','Yashwant Kanetkar','BPB',8); Book b2=new Book(102,'Data Communications & Networking','Forouzan','Mc Graw Hill',4); Book b3=new Book(103,'Operating System','Galvin','Wiley',6); //Adding Books to Deque set.add(b1); set.add(b2); set.add(b3); //Traversing ArrayDeque for(Book b:set){ System.out.println(b.id+' '+b.name+' '+b.author+' '+b.publisher+' '+b.quantity); } } }
산출:
101 Let us C Yashwant Kanetkar BPB 8 102 Data Communications & Networking Forouzan Mc Graw Hill 4 103 Operating System Galvin Wiley 6