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 이후 인터페이스