LinkedList是用双向链表结构存储数据的,很适合数据的动态插入和删除,随机访问和遍历速度比较慢。

底层是一个双向链表,链表擅长插入和删除操作,队列和栈最常用的2种操作都设计到插入和删除








import java.util.LinkedList;
import java.util.Queue;
//用linkedList模拟队列,因为链表擅长插入和删除
public class Hi {
public static void main(String [] args) { //做剑指offer遇见过这个数结
Queue<String> queue = new LinkedList<String>();
//追加元素
queue.add("zero");
queue.offer("one");
queue.offer("two");
queue.offer("three");
queue.offer("four");
System.out.println(queue);//[zero, one, two, three, four]
//从队首取出元素并删除
System.out.println(queue.poll());// zero
System.out.println(queue.remove());//one
System.out.println(queue);//[two, three, four]
//从队首取出元素但是不删除
String peek = queue.peek();
System.out.println(peek); //two
//遍历队列,这里要注意,每次取完元素后都会删除,整个
//队列会变短,所以只需要判断队列的大小即可
while(queue.size() > 0) {
System.out.println(queue.poll());
}//two three four
}
}

  




 //用linkedList模拟栈,因为链表擅长插入和删除

import java.util.Deque;
import java.util.LinkedList; public class Hi {
public static void main(String[] args) {
/*模拟栈,这是从头开始进来的*/
Deque<String> deque = new LinkedList<String>();
/*Pushes an element onto the stack
*at the head of this dequeue */
deque.push("a");
deque.push("b");
deque.push("c");
System.out.println(deque); //[c, b, a]
//获取栈首元素后,元素不会出栈
System.out.println(deque.peek());//c
while(deque.size() > 0) {
//获取栈首元素后,元素将会出栈
System.out.println(deque.pop());//c b a
}
System.out.println(deque);//[] /*模拟栈*/
deque.offerLast("a");
deque.offerLast("b");
deque.offerLast("c");// [a, b, c]
while(!deque.isEmpty())
System.out.println(deque.pollLast());
} // 先输出c再b最后a
}

  





import java.util.Stack;
//没有用到接口编程
public class Hi {
public static void main(String[] args) {
Stack<Integer> s = new Stack<Integer>();
s.push(1);
s.push(2);// [1,2]
s.push(3);// [1,2,3]
while(!s.isEmpty()){
System.out.println(s.pop());
}//依次输入 3 接着是2 ,然后1
}
}

  

LinkedList(实现了queue,deque接口,List接口)实现栈和队列的功能的更多相关文章

  1. LinkedList作为栈和队列的使用

    最近在LeekCode用java写一些算法时,经常遇到要使用栈和队列结构,使用栈的话,Stack已经不被推荐使用了,所以栈和队列我们通常都是用LinkedList这种双链表结构实现.Linkedlis ...

  2. LeetCode 232. 用栈实现队列(Implement Queue using Stacks) 4

    232. 用栈实现队列 232. Implement Queue using Stacks 题目描述 使用栈实现队列的下列操作: push(x) -- 将一个元素放入队列的尾部. pop() -- 从 ...

  3. Java容器解析系列(6) Queue Deque AbstractQueue 详解

    首先我们来看一下Queue接口: /** * @since 1.5 */ public interface Queue<E> extends Collection<E> { / ...

  4. 【JDK】JDK源码-Queue, Deque

    概述 Queue 和 Deque 都是接口.其中 Queue 接口定义的是一个队列,它包含队列的基本操作:入队(enqueue)和出队(dequeue). Deque 接口继承自 Queue 接口,表 ...

  5. Asp.net 面向接口可扩展框架之消息队列组件

    消息队列对大多数人应该比较陌生.但是要提到MQ听说过的人会多很多.MQ就是英文单词"Message queue"的缩写,翻译成中文就是消息队列(我英语差,翻译错了请告知). PS: ...

  6. 集合框架关于<list接口><map接口>的运用

    集合: 集合就是一个容器,他可以存储对象,我们说集合就是一个可变的数组 集合框架特点 1.list和set集合同时实现了collection接口 2.set集合存储唯一,无序的对象. 3.list 存 ...

  7. Java中的集合(二)单列集合顶层接口------Collection接口

    Java中的集合(二)单列集合顶层接口------Collection接口 Collection是一个高度封装的集合接口,继承自Iterable接口,它提供了所有集合要实现的默认方法.由于Iterab ...

  8. Delphi 的接口机制——接口操作的编译器实现过程(1)

    学习COM编程技术也快有半个月了,这期间看了很多资料和别人的程序源码,也尝试了用delphi.C++.C#编写COM程序,个人感觉Delphi是最好上手的.C++的模版生成的代码太过复杂繁琐,大量使用 ...

  9. PHP - 接口 - 多接口

    /* * 使用多接口 */ //定义接口1 interface IPerosn_one{ public function eat(); } //定义接口2 interface IPerson_two{ ...

随机推荐

  1. 一个canvas的demo

    该demo放于tomcat下运行,否则出现跨域错误 <!DOCTYPE html> <html> <head> <meta charset="utf ...

  2. SQL-24 获取所有非manager员工当前的薪水情况,给出dept_no、emp_no以及salary ,当前表示to_date='9999-01-01'

    题目描述 获取所有非manager员工当前的薪水情况,给出dept_no.emp_no以及salary ,当前表示to_date='9999-01-01'CREATE TABLE `dept_emp` ...

  3. 1076 Wifi密码

    下面是微博上流传的一张照片:“各位亲爱的同学们,鉴于大家有时需要使用 wifi,又怕耽误亲们的学习,现将 wifi 密码设置为下列数学题答案:A-1:B-2:C-3:D-4:请同学们自己作答,每两日一 ...

  4. tomcat的安装及配置

    1.首先进tomcat官网下载zip压缩文件:http://tomcat.apache.org/download-90.cgi 2.解压缩到指定文件压(后面配置环境变量会用到) 3.配置环境变量 4. ...

  5. freemarker中的null异常处理以及!与??的使用(转)

    原文链接: https://blog.csdn.net/mexican_jacky/article/details/50638062 阅读数:6304 如工程包含: 在user中我们有个角色,那么我们 ...

  6. 实力封装:Unity打包AssetBundle(四)

    →→前情提要:窗口初现←← 让用户选择要打包的文件 时至今日,我们选择打包文件的方式依然是在Project面板或Hierarchy面板中用鼠标点选.现在既然有了窗口,我们自然希望可以将所有文件罗列在窗 ...

  7. L308 New brain cells made throughout life

    People keep making new brain cells throughout their lives (well at least until the age of 97), accor ...

  8. synchronized(七)

    package com.bjsxt.base.sync006; /** * 死锁问题,在设计程序时就应该避免双方相互持有对方的锁的情况 * @author alienware * */public c ...

  9. Delphi 10.3终于来了

    http://altd.embarcadero.com/download/radstudio/10.3/delphicbuilder10_3_0_94364.iso   安装工具: http://ww ...

  10. django面试四

    Django的优点 功能完善.要素齐全:自带大量常用工具和框架(比如分页,auth,权限管理), 适合快速开发企业级网站. 完善的文档:经过十多年的发展和完善,Django有广泛的实践案例和完善的在线 ...