java
이 자습서에서는 예제를 통해 ArrayDeque 클래스와 해당 메서드에 대해 알아봅니다. 또한 배열 deque를 사용하여 스택을 구현하는 방법을 배웁니다.
자바에서는 ArrayDeque를 사용할 수 있습니다. 배열을 사용하여 queue 및 deque 데이터 구조를 구현하는 클래스입니다.
ArrayDeque 클래스는 다음 두 인터페이스를 구현합니다.

배열 데크를 생성하려면 java.util.ArrayDeque을 가져와야 합니다. 패키지.
Java에서 배열 데크를 만드는 방법은 다음과 같습니다.
ArrayDeque<Type> animal = new ArrayDeque<>();
여기서 유형 배열 데크의 유형을 나타냅니다. 예를 들어,
// Creating String type ArrayDeque
ArrayDeque<String> animals = new ArrayDeque<>();
// Creating Integer type ArrayDeque
ArrayDeque<Integer> age = new ArrayDeque<>();
<시간>
ArrayDeque 클래스는 Queue에 있는 모든 메서드에 대한 구현을 제공합니다. 및 Deque 인터페이스.
1. add(), addFirst() 및 addLast()를 사용하여 요소 추가
add() - 배열 deque의 끝에 지정된 요소를 삽입합니다.addFirst() - 배열 deque의 시작 부분에 지정된 요소를 삽입합니다.addLast() - 배열 deque의 끝에 지정된 것을 삽입합니다(add()와 동일). )
참고: 배열 deque가 가득 차면 이러한 모든 메서드는 add() , addFirst() 및 addLast() IllegalStateException 발생 .
예를 들어,
import java.util.ArrayDeque;
class Main {
public static void main(String[] args) {
ArrayDeque<String> animals= new ArrayDeque<>();
// Using add()
animals.add("Dog");
// Using addFirst()
animals.addFirst("Cat");
// Using addLast()
animals.addLast("Horse");
System.out.println("ArrayDeque: " + animals);
}
}
출력
ArrayDeque: [Cat, Dog, Horse]
2. offer(), offerFirst() 및 offerLast()를 사용하여 요소 삽입
offer() - 배열 deque의 끝에 지정된 요소를 삽입합니다.offerFirst() - 배열 deque의 시작 부분에 지정된 요소를 삽입합니다.offerLast() - 배열 deque의 끝에 지정된 요소를 삽입합니다.
참고: offer() , offerFirst() 및 offerLast() true 반환 요소가 성공적으로 삽입된 경우 배열 데크가 가득 차면 이 메서드는 false을 반환합니다. .
예를 들어,
import java.util.ArrayDeque;
class Main {
public static void main(String[] args) {
ArrayDeque<String> animals= new ArrayDeque<>();
// Using offer()
animals.offer("Dog");
// Using offerFirst()
animals.offerFirst("Cat");
// Using offerLast()
animals.offerLast("Horse");
System.out.println("ArrayDeque: " + animals);
}
}
출력
ArrayDeque: [Cat, Dog, Horse]
참고: 어레이 데크가 가득 찬 경우
add() 메서드에서 예외가 발생합니다.offer() 메서드는 false을 반환합니다. 1. getFirst() 및 getLast()를 사용하여 요소에 액세스
getFirst() - 배열 deque의 첫 번째 요소를 반환합니다.getLast() - 배열 deque의 마지막 요소를 반환합니다.
참고: 배열 데크가 비어 있으면 getFirst() 및 getLast() NoSuchElementException 발생 .
예를 들어,
import java.util.ArrayDeque;
class Main {
public static void main(String[] args) {
ArrayDeque<String> animals= new ArrayDeque<>();
animals.add("Dog");
animals.add("Cat");
animals.add("Horse");
System.out.println("ArrayDeque: " + animals);
// Get the first element
String firstElement = animals.getFirst();
System.out.println("First Element: " + firstElement);
// Get the last element
String lastElement = animals.getLast();
System.out.println("Last Element: " + lastElement);
}
}
출력
ArrayDeque: [Dog, Cat, Horse] First Element: Dog Last Element: Horse
2. peek(), peekFirst() 및 peekLast() 메서드를 사용하여 요소에 액세스
peek() - 배열 deque의 첫 번째 요소를 반환합니다.peekFirst() - 배열 deque의 첫 번째 요소를 반환합니다(peek()와 동일). )peekLast() - 배열 deque의 마지막 요소를 반환합니다.
예를 들어,
import java.util.ArrayDeque;
class Main {
public static void main(String[] args) {
ArrayDeque<String> animals= new ArrayDeque<>();
animals.add("Dog");
animals.add("Cat");
animals.add("Horse");
System.out.println("ArrayDeque: " + animals);
// Using peek()
String element = animals.peek();
System.out.println("Head Element: " + element);
// Using peekFirst()
String firstElement = animals.peekFirst();
System.out.println("First Element: " + firstElement);
// Using peekLast
String lastElement = animals.peekLast();
System.out.println("Last Element: " + lastElement);
}
}
출력
ArrayDeque: [Dog, Cat, Horse] Head Element: Dog First Element: Dog Last Element: Horse
참고: 배열 데크가 비어 있으면 peek() , peekFirst() 및 getLast() NoSuchElementException 발생 .
1. remove(), removeFirst(), removeLast() 메소드를 사용하여 요소 제거
remove() - 배열 deque의 첫 번째 요소에서 요소를 반환하고 제거합니다.remove(element) - 배열 deque의 헤드에서 지정된 요소를 반환하고 제거합니다.removeFirst() - 배열 deque에서 첫 번째 요소를 반환하고 제거합니다(remove()와 동일). )removeLast() - 배열 deque에서 마지막 요소를 반환하고 제거합니다.
참고: 배열 데크가 비어 있으면 remove() , removeFirst() 및 removeLast() 메서드에서 예외가 발생합니다. 또한 remove(element) 요소를 찾을 수 없으면 예외가 발생합니다.
예를 들어,
import java.util.ArrayDeque;
class Main {
public static void main(String[] args) {
ArrayDeque<String> animals= new ArrayDeque<>();
animals.add("Dog");
animals.add("Cat");
animals.add("Cow");
animals.add("Horse");
System.out.println("ArrayDeque: " + animals);
// Using remove()
String element = animals.remove();
System.out.println("Removed Element: " + element);
System.out.println("New ArrayDeque: " + animals);
// Using removeFirst()
String firstElement = animals.removeFirst();
System.out.println("Removed First Element: " + firstElement);
// Using removeLast()
String lastElement = animals.removeLast();
System.out.println("Removed Last Element: " + lastElement);
}
}
출력
ArrayDeque: [Dog, Cat, Cow, Horse] Removed Element: Dog New ArrayDeque: [Cat, Cow, Horse] Removed First Element: Cat Removed Last Element: Horse
2. poll(), pollFirst() 및 pollLast() 메소드를 사용하여 요소 제거
poll() - 배열 deque의 첫 번째 요소를 반환하고 제거합니다.pollFirst() - 배열 deque의 첫 번째 요소를 반환하고 제거합니다(poll()와 동일). )pollLast() - 배열 deque의 마지막 요소를 반환하고 제거합니다.
참고: 배열 데크가 비어 있으면 poll() , pollFirst() 및 pollLast() null 반환 요소를 찾을 수 없는 경우.
예를 들어,
import java.util.ArrayDeque;
class Main {
public static void main(String[] args) {
ArrayDeque<String> animals= new ArrayDeque<>();
animals.add("Dog");
animals.add("Cat");
animals.add("Cow");
animals.add("Horse");
System.out.println("ArrayDeque: " + animals);
// Using poll()
String element = animals.poll();
System.out.println("Removed Element: " + element);
System.out.println("New ArrayDeque: " + animals);
// Using pollFirst()
String firstElement = animals.pollFirst();
System.out.println("Removed First Element: " + firstElement);
// Using pollLast()
String lastElement = animals.pollLast();
System.out.println("Removed Last Element: " + lastElement);
}
}
출력
ArrayDeque: [Dog, Cat, Cow, Horse] Removed Element: Dog New ArrayDeque: [Cat, Cow, Horse] Removed First Element: Cat Removed Last Element: Horse
3. 요소 제거:clear() 메서드 사용
배열 deque에서 모든 요소를 제거하려면 clear()를 사용합니다. 방법. 예를 들어,
import java.util.ArrayDeque;
class Main {
public static void main(String[] args) {
ArrayDeque<String> animals= new ArrayDeque<>();
animals.add("Dog");
animals.add("Cat");
animals.add("Horse");
System.out.println("ArrayDeque: " + animals);
// Using clear()
animals.clear();
System.out.println("New ArrayDeque: " + animals);
}
}
출력
ArrayDeque: [Dog, Cat, Horse] New ArrayDeque: []<시간>
iterator() - 배열 deque를 반복하는 데 사용할 수 있는 반복자를 반환합니다.descendingIterator() - 배열 deque를 역순으로 반복하는 데 사용할 수 있는 반복자를 반환합니다.
이러한 방법을 사용하려면 java.util.Iterator를 가져와야 합니다. 패키지. 예를 들어,
import java.util.ArrayDeque;
import java.util.Iterator;
class Main {
public static void main(String[] args) {
ArrayDeque<String> animals= new ArrayDeque<>();
animals.add("Dog");
animals.add("Cat");
animals.add("Horse");
System.out.print("ArrayDeque: ");
// Using iterator()
Iterator<String> iterate = animals.iterator();
while(iterate.hasNext()) {
System.out.print(iterate.next());
System.out.print(", ");
}
System.out.print("\nArrayDeque in reverse order: ");
// Using descendingIterator()
Iterator<String> desIterate = animals.descendingIterator();
while(desIterate.hasNext()) {
System.out.print(desIterate.next());
System.out.print(", ");
}
}
}
출력
ArrayDeque: [Dog, Cat, Horse] ArrayDeque in reverse order: [Horse, Cat, Dog]<시간>
| 메소드 | 설명 |
|---|---|
element() | 배열 데크의 헤드에서 요소를 반환합니다. |
contains(element) | 지정된 요소에 대한 배열 deque를 검색합니다. 요소가 발견되면 true를 반환합니다. , 그렇지 않으면 false를 반환합니다. . |
size() | 배열 deque의 길이를 반환합니다. |
toArray() | 배열 deque를 배열로 변환하고 반환합니다. |
clone() | 배열 deque의 복사본을 만들고 반환합니다. |
LIFO(후입선출)를 구현하려면 Java에서 스택을 사용하려면 Stack 클래스보다 deque를 사용하는 것이 좋습니다. ArrayDeque 클래스는 Stack보다 빠를 가능성이 높습니다. 수업.
ArrayDeque 스택 구현에 사용할 수 있는 다음과 같은 메서드를 제공합니다.
push() - 스택의 맨 위에 요소를 추가합니다.peek() - 스택의 맨 위에서 요소를 반환합니다.pop() - 스택의 맨 위에서 요소를 반환하고 제거합니다.예를 들어,
import java.util.ArrayDeque;
class Main {
public static void main(String[] args) {
ArrayDeque<String> stack = new ArrayDeque<>();
// Add elements to stack
stack.push("Dog");
stack.push("Cat");
stack.push("Horse");
System.out.println("Stack: " + stack);
// Access element from top of stack
String element = stack.peek();
System.out.println("Accessed Element: " + element);
// Remove elements from top of stack
String remElement = stack.pop();
System.out.println("Removed element: " + remElement);
}
}
출력
Stack: [Horse, Cat, Dog] Accessed Element: Horse Removed Element: Horse<시간>
ArrayDeque 둘 다 Java LinkedList는 Deque을 구현합니다. 상호 작용. 그러나 그들 사이에는 몇 가지 차이점이 있습니다.
LinkedList null 지원 요소인 반면 ArrayDeque 하지 않습니다.LinkedList ArrayDeque보다 더 많은 저장 공간이 필요합니다. .ArrayDeque LinkedList보다 빠를 가능성이 높습니다. .java
자바 ArrayDeque 이 자습서에서는 예제를 통해 ArrayDeque 클래스와 해당 메서드에 대해 알아봅니다. 또한 배열 deque를 사용하여 스택을 구현하는 방법을 배웁니다. 자바에서는 ArrayDeque를 사용할 수 있습니다. 배열을 사용하여 queue 및 deque 데이터 구조를 구현하는 클래스입니다. ArrayDeque에 의해 구현된 인터페이스 ArrayDeque 클래스는 다음 두 인터페이스를 구현합니다. 자바 대기열 인터페이스 자바 데크 인터페이스 ArrayDeque 생성 배열 데크를 생성하려면 jav
자바 차단 대기열 이 자습서에서는 Java BlockingQueue 인터페이스와 해당 메서드에 대해 알아봅니다. BlockingQueue 자바 Collections의 인터페이스 프레임워크는 Queue을 확장합니다. 상호 작용. 모든 작업이 성공적으로 수행될 수 있을 때까지 대기할 수 있습니다. 예를 들어, 빈 대기열에서 요소를 삭제하려는 경우 차단 대기열을 사용하면 대기열에 삭제할 일부 요소가 포함될 때까지 삭제 작업이 대기할 수 있습니다. BlockingQueue를 구현하는 클래스 BlockingQueue 이후 인터페이스