-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathDequeInterface.java
123 lines (96 loc) · 4.23 KB
/
DequeInterface.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
import java.util.*;
public class DequeInterface {
public static void main(String[] args) {
// Create a deque
Deque<String> deque = new LinkedList<>();
// Demonstrate basic operations
demonstrateBasicOperations(deque);
// Demonstrate advanced operations
demonstrateAdvancedOperations(deque);
// Demonstrate additional operations
demonstrateAllMethods(deque);
}
private static void demonstrateBasicOperations(Deque<String> deque) {
System.out.println("Basic Deque Operations:");
// Add elements at the end
deque.offerLast("Apple");
deque.offerLast("Banana");
deque.offerLast("Cherry");
// Peek at the front element
System.out.println("Front element (peekFirst): " + deque.peekFirst());
// Peek at the last element
System.out.println("Last element (peekLast): " + deque.peekLast());
// Check size
System.out.println("Size of the deque: " + deque.size());
// Remove an element from the front
System.out.println("Removed element (pollFirst): " + deque.pollFirst());
// Remove an element from the end
System.out.println("Removed element (pollLast): " + deque.pollLast());
// Check if an element exists
System.out.println("Contains 'Banana': " + deque.contains("Banana"));
// Iterate over elements
System.out.println("Deque elements:");
for (String fruit : deque) {
System.out.println(fruit);
}
// Clear the deque
deque.clear();
System.out.println("Is deque empty? " + deque.isEmpty());
System.out.println(); // Empty line for better readability
}
private static void demonstrateAdvancedOperations(Deque<String> deque) {
System.out.println("Advanced Deque Operations:");
// Add elements again for demonstration
deque.offerLast("Apple");
deque.offerLast("Banana");
deque.offerLast("Cherry");
deque.offerLast("Date");
// Using forEach to iterate
System.out.println("Deque elements (using forEach):");
deque.forEach(System.out::println);
// Using an iterator
System.out.println("Deque elements (using iterator):");
Iterator<String> iterator = deque.iterator();
while (iterator.hasNext()) {
System.out.println(iterator.next());
}
// Using descending iterator
System.out.println("Deque elements (using descending iterator):");
Iterator<String> descendingIterator = deque.descendingIterator();
while (descendingIterator.hasNext()) {
System.out.println(descendingIterator.next());
}
// Access head and tail without removal
System.out.println("Head element (getFirst): " + deque.getFirst());
System.out.println("Tail element (getLast): " + deque.getLast());
// Remove elements using removeFirst and removeLast
try {
while (!deque.isEmpty()) {
System.out.println("Removed from front (removeFirst): " + deque.removeFirst());
if (!deque.isEmpty()) {
System.out.println("Removed from end (removeLast): " + deque.removeLast());
}
}
} catch (NoSuchElementException e) {
System.out.println("Deque is empty!");
}
System.out.println("Is deque empty after removing all elements? " + deque.isEmpty());
System.out.println(); // Empty line for better readability
}
private static void demonstrateAllMethods(Deque<String> deque) {
System.out.println("Demonstrating All Methods:");
// Add elements at both ends
deque.addFirst("Mango");
deque.addLast("Pineapple");
// Convert to array
Object[] array = deque.toArray();
System.out.println("Deque as array: " + Arrays.toString(array));
// Remove specific elements
deque.remove("Mango");
System.out.println("After removing 'Mango': " + deque);
// Clear and check isEmpty
deque.clear();
System.out.println("Cleared deque. Is empty? " + deque.isEmpty());
System.out.println(); // Empty line for better readability
}
}