java 中的队列和栈
一:队列
(1)
-->队列是常用的数据结构,可以看作特殊的线性表,队列限制了线性表的访问方式:只能从线性表的一段(offer)元素,从另一段去除(poll)元素-
--->队列:先进先出
--->JDK提供了Queue接口,同时使得LinkedList实现了该接口(选择Linkedist实现Queue的原因在于Queue经常要进行添加和删除,linkedlist在这方面效率较高)
--->Queue 的接口:
boolean offer(E e):将一个对象加之队尾,成功返回true
E poll():从队首删除并返回一个元素
E peek():返回队首的元素(但是不删除)
(2)测试代码:
import java.util.LinkedList;
import java.util.Queue;
/*
* E poll()
* 对象进行了出队操作,获取队列第一个元素
* 并且获取该元素就从队列中删除了。
*
*/
/*
* E peek()
* 若想引用队首元而不做出队操作
* 那么可以使用peek方法
*/
public class Demo1 {
public static void main(String[] args) {
Queue<String> queue=new LinkedList<String>();
queue.add("one");
queue.add("two");
queue.add("three");
queue.add("four");
System.out.println(queue);
String str=queue.poll();
System.out.println(str);
System.out.println(queue);
String str1=queue.peek();
System.out.println(str1);
while(queue.size()>0){
String str3=queue.poll();
System.out.println(str3);
}
System.out.println("遍历完毕,输出queue");
System.out.println(queue);
}
}
二 栈
(1) -->Deque是Queue的子接口,定义了所谓“双端队列”即从队列的两端可以入队
(offer)和出队(poll),LinkedList实现了此接口。
如果将Deque限制为只能从一段入队和出队。则实现"栈"的数据结构,对于”栈“而言,入栈称之为push,出栈称之为pop
-->先进后出的原则
-->Deque 主的实现接口
1.push()
2.peek()
3.pop()
(2)测试代码:
import java.util.Deque;
import java.util.LinkedList;
/**
* 栈结构
* 存放一组数组 但是存取元素必须遵循先进后出的原则
* java没有为栈提供专门的类 而是使用双端队列实现的 java.util.Deque
* @author soft01
*
*/
public class Demo2 {
public static void main(String[] args) {
Deque<String> deque=new LinkedList<String>();
deque.push("one");
deque.push("two");
deque.push("three");
System.out.println(deque);
String str=deque.peek();
System.out.println(str);
System.out.println(deque);
System.out.println(deque);
while(deque.size()>0){
String str1=deque.pop();
System.out.println(str1);
}
}
}