.使用java.util.Queue接口,其底层关联到一个LinkedList(双端队列)实例。由于只暴露部分基于队列实现的接口,所以可以提供安全的队列实现。
package junit;
import java.util.LinkedList;
import java.util.Queue;
/**
* 用LinkedList实现队列
*
* 队列和栈区别:队列先进先出,栈先进后出。
*
* @author 林计钦
* @version 1.0 Sep 5, 2013 11:26:45 PM
*/
public class MyQueue<T> {
private Queue<T> storage = new LinkedList<T>();
/** 将指定的元素插入队尾 */
public void offer(T v) {
storage.offer(v);
}
/** 检索,但是不移除队列的头,如果此队列为空,则返回 null */
public T peek() {
return storage.peek();
}
/** 检索,但是不移除此队列的头 */
/** 此方法与 peek 方法的惟一不同是,如果此队列为空,它会抛出一个异常 */
public T element() {
return storage.element();
}
/** 检索并移除此队列的头,如果队列为空,则返回 null */
public T poll() {
return storage.poll();
}
/** 检索并移除此队列的头 */
/** 此方法与 poll 方法的不同在于,如果此队列为空,它会抛出一个异常 */
public T remove() {
return storage.remove();
}
/** 队列是否为空 */
public boolean empty() {
return storage.isEmpty();
}
/** 打印队列元素 */
public String toString() {
return storage.toString();
}
public static void main(String[] args) {
MyQueue stack=new MyQueue<String>();
stack.offer("a");
stack.offer("b");
stack.offer("c");
//[a, b, c]
System.out.println(stack.toString());
Object obj=stack.peek();
// a--[a, b, c]
System.out.println(obj+"--"+stack.toString());
obj=stack.element();
// a--[a, b, c]
System.out.println(obj+"--"+stack.toString());
obj=stack.poll();
//a--[b, c]
System.out.println(obj+"--"+stack.toString());
obj=stack.remove();
//b--[c]
System.out.println(obj+"--"+stack.toString());
//false
System.out.println(stack.empty());
}
}
Java:基于LinkedList实现栈和队列
1.提供一组栈的接口,其底层关联到一个LinkedList(双端队列)实例。由于只暴露部分基于栈实现的接口,所以可以提供安全的栈实现。
package junit;
import java.util.LinkedList;
/**
* 用LinkedList实现栈
*
* 队列和栈区别:队列先进先出,栈先进后出。
*
* @author 林计钦
* @version 1.0 Sep 5, 2013 11:24:34 PM
*/
public class Stack<T> {
private LinkedList<T> storage = new LinkedList<T>();
/** 入栈 */
public void push(T v) {
storage.addFirst(v);
}
/** 出栈,但不删除 */
public T peek() {
return storage.getFirst();
}
/** 出栈,删除 */
public T pop() {
return storage.removeFirst();
}
/** 栈是否为空 */
public boolean empty() {
return storage.isEmpty();
}
/** 打印栈元素 */
public String toString() {
return storage.toString();
}
public static void main(String[] args) {
Stack stack=new Stack<String>();
stack.push("a");
stack.push("b");
stack.push("c");
//[c, b, a]
System.out.println(stack.toString());
//c--[c, b, a]
Object obj=stack.peek();
System.out.println(obj+"--"+stack.toString());
obj=stack.pop();
//c--[b, a]
System.out.println(obj+"--"+stack.toString());
//false
System.out.println(stack.empty());
}
}
分享到:
相关推荐
java中LinkedList集合类实现栈和队列.docjava中LinkedList集合类实现栈和队列.docjava中LinkedList集合类实现栈和队列.docjava中LinkedList集合类实现栈和队列.docjava中LinkedList集合类实现栈和队列.doc
NULL 博文链接:https://quicker.iteye.com/blog/550485
LinkedList实现栈。对LinkedList添加同步,可以多线程操作。
NULL 博文链接:https://duqiangcise.iteye.com/blog/711415
·基于JDK 11,将Java8、Java9、Java10、Java11新特性一网打尽 ·课程中,Eclipse和IDEA这两种企业一线开发环境都使用到了 3.技术讲解更深入、更全面: ·课程共30天,715个知识视频小节,涉及主流Java使用的...
栈是先进先出的原则,该类实现了栈的移入移除
源码解析jdk7.0集合:LinkedList的底层实现原理.pdf
使用LinkedList模拟堆栈操作,包括进栈、出栈,入队、出队
java软件技术文档
java.util.LinkedList$ListItr.checkForComodification(LinkedList.java:953) java.util.LinkedList$ListItr.next(LinkedList.java:886) JMeter.plugins.functional.samplers.websocket.ServiceSocket....
Java 中Linkedlist类的源代码Java 中Linkedlist类的源代码Java 中Linkedlist类的源代码Java 中Linkedlist类的源代码
阶段练习:实现链表(LinkedList) 简介:写一个链表的数据结构,要求实现IList接口。 具体要求: 1、 使用代码规范。 2、 至少对IList中的Add,Remove,Insert,Indexer,IEnumerator进行单元测试。 3、 对上述每个...
实现一个链表LinkedList,要求使用链表机构实现,并提供相应的add(Object o),remove(Object o)这两个方法.
非常简单的Java LinkedList 应用实例
LinkedList同时实现了List接口和Deque接口,也是说它既可以看作一个顺序容器,又可以看作一个队列(Queue),同时又可以看作一个栈(Stack)。这样看来,LinkedList简直是个全能。当你需要使用栈或者队列时,可以...
主要介绍了解析Java中的队列和用LinkedList集合模拟队列的方法,相关算法的实现也是ACM中的常见题目,需要的朋友可以参考下
相信大家都明白 LinkedList 是基于双向链表而实现的,本篇文章主要讲解一下双向链表的实现,并且我们参考 LinkedList 自己实现一个单链表尝试一下。 什么是链表? 简单的来讲一下什么是链表:首先链表是一种线性的...
【Java面试题】ArrayList和LinkedList区别
基于线程、GUIswing、LinkedList实现贪吃蛇游戏
用LinkedList实现一个队列的所有操作: 入队\出队\求队列长度\判断队列是否为空\打印队列等