java.util.Queue 队列接口
Queue继承自Collection,所以队列本身也是一种集合。队列可以保存一组元素,但是特点是存取元素必须遵循先进先出原则。
常用实现类:java.util.LinkedList
Queue<String> queue = new LinkedList<>();
//offer方法:入队操作,元素会被追加到队列末尾
queue.offer("one");
queue.offer("two");
queue.offer("three");
queue.offer("four");
queue.offer("five");
System.out.println(queue);
//poll方法:出队操作,获取队首元素后该元素从队列中被删除
String str = queue.poll();
System.out.println(str);
System.out.println(queue);
// peek方法:引用队首元素,获取后该元素仍然在队列中
str = queue.peek();
System.out.println(str);
System.out.println(queue);
//遍历队列,遍历并不影响元素在队列中。
for(String s :queue){
System.out.println(s);
}
System.out.println(queue);
///使用poll方法遍历
while(queue.size()>0){
str = queue.poll();
System.out.println(str);
}
双端队列接口:java.util.Deque
Deque继承自Queue,特点是队列两端都可以做出入队操作。
常用实现类:java.util.LinkedList
Deque<String> deque = new LinkedList<>();
deque.offer("one");
deque.offer("two");
deque.offer("three");
deque.offer("four");
System.out.println(deque);
从队首方向入队
deque.offerFirst("five");
System.out.println(deque);
从队尾方向入队,与offer一致
deque.offerLast("six");
System.out.println(deque);
String str = deque.poll();
System.out.println(str);
System.out.println(deque);
str = deque.pollFirst();
System.out.println(str);
System.out.println(deque);
str = deque.pollLast();
System.out.println(str);
System.out.println(deque);
栈结构
栈可以保存一组元素,但是存取元素必须遵循先进后出原则。通常使用栈结构完成"后退"这样的功能使用。
Deque双端队列如果从同一侧做出入队操作就实现了栈结构,因此Deque也为栈提供它出入栈的经典方法:push,pop
Deque<String> stack = new LinkedList<>();
stack.push("one");
stack.push("two");
stack.push("three");
stack.push("four");
stack.push("five");
System.out.println(stack);
String str = stack.pop();
System.out.println(str);
System.out.println(stack);